Я пытаюсь проанализировать некоторые файлы журнала с помощью сценария, и так как все они могут быть проанализированы независимо, я пытаюсь выполнить их в фоновом режиме. Я использую следующую команду, но я получаю синтаксическую ошибку, указанную прямо после:
for k in {2..3}; do for i in {1..3}; do for j in {1..3}; do ./run_parser.sh ${k} ${i} ${j} > parse_${k}${i}${j}.log 2>&1 &; done; done; done
-bash: syntax error near unexpected token `;'
Хотя, если я работаю run_parser.sh
напишите сценарий индивидуально один за другим без цикла, он хорошо работает. Что-то как:
./run_parser.sh 2 1 2 > parse_212.log 2>&1 &
превосходные работы.
Кроме того, я ранее попробовал:
for k in {2..3}; do for i in {1..3}; do for j in {1..3}; do ./run_parser.sh ${k} ${i} ${j} & > parse_${k}${i}${j}.log ; done; done; done
который также не работало работавшее но перенаправление вывода, и все печаталось для экранирования.
Необходимо поместить фоновую команду в ()
как это:
for k in {2..3}; do for i in {1..3}; do for j in {1..3}; do (./run_parser.sh ${k} ${i} ${j} > parse_${k}${i}${j}.log 2>&1 &); done; done; done
Вам не нужно ;
после &
, &
самостоятельно действия как разделитель команды. Посмотрите раздел "List of commands" в справочник .
Bash, Это выполнит три параллельных ping
:
ping -c 3 askubuntu.com & ping -c 3 askubuntu.com & ping -c 3 askubuntu.com &