Как читать команды из файла?

У меня есть некоторые скрипты php которые я запускаю в следующем порядке:

 php index.php import file1 --offline && php index.php import file2 --deleteUnused && php index.php import file3 

Теперь я недавно открыл parallel команду, и я попробовал что-то вроде этого:

 parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3" 

И он отлично работает.

Возможно ли, что у меня может быть файл, в который включены все вышеприведенные команды, и начать parallel с возможностью читать команды из файла?

Что-то вроде этого:

 parallel -XX myFileWithCommands.txt 

2 Solutions collect form web for “Как читать команды из файла?”

Создайте myFileWithCommands.txt :

 php index.php import file1 --offline php index.php import file2 --deleteUnused php index.php import file3 

Затем выполните параллель следующим образом:

 parallel -j 3 -- < myFileWithCommands.txt 

Ну, есть два простых способа сделать это, что я могу себе представить. Вы можете либо передать содержимое файла в parallel , либо написать сценарий оболочки. Если все, что вы хотите выполнить, это конкретный набор задач, тогда сценарий оболочки может иметь больше смысла. Он был бы очень коротким, сладким и точным, а также:

 #!/bin/sh parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3" 

Теперь, если вам нужно что-то более обобщаемое (т. Е. Что-то, что вы можете сделать несколько наборов команд для загрузки в виде группы), тогда может быть проще придумать простой формат файла, а затем передать содержимое файла в parallel .

Самый простой способ сделать это – если у вас есть текст, включайте команды verbatim, которые вы хотите запустить.

Например, если это был ваш текстовый файл ( test.txt ):

 "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3" 

Затем вы можете запустить следующее, и это может сработать нормально:

 $ cat test.txt | parallel -j 3 -- 

Вы также можете поэкспериментировать с немного более сложным форматом файла (например, каждая команда на новой строке и не окружена кавычками). Если вам нужно спуститься по этой дороге, вам нужно будет выполнить небольшой маразм в файле, прежде чем прокладывать его parallel что может быть выполнено довольно легко, скажем, например, awk .

Однако, если вы решите создать более гибкий формат файла, возможно, было бы полезно создать сценарий (или функцию) вспомогательной оболочки, который избавит вас от необходимости вводить awk '<whatever patterns you match> { do something }' | parallel -j3 -- awk '<whatever patterns you match> { do something }' | parallel -j3 -- каждый раз.

  • Горячая клавиша LXDE для запуска приложения или переключения на него, если он уже запущен
  • Выполнение скрипта на удаленном сервере, содержащемся на стороне клиента
  • Запись наивысшего NF
  • Резервное копирование файлов определенного предела в unix
  • Сценарий Bash работает через терминал, но не через главное меню
  • Перезапустите локальный скрипт из URL-адреса, доступного исходному коду?
  • Обобщающий файл задания qsub для Grid Engine для нескольких программ и имен входных файлов
  • Bash печатает текущую строку, вывод строки и строку в файл
  • как конкатенировать следующую строку, когда условие истинно awk
  • Как я могу отказаться от оболочки после выхода из команды, которую я начал с помощью сценария tmux?
  • Команды VIM для скриптов Bash
  • Linux и Unix - лучшая ОС в мире.