Синтаксическая ошибка в для цикла, когда вывод перенаправления в файл в фоне

Я пытаюсь проанализировать некоторые файлы журнала с помощью сценария, и так как все они могут быть проанализированы независимо, я пытаюсь выполнить их в фоновом режиме. Я использую следующую команду, но я получаю синтаксическую ошибку, указанную прямо после:

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

который также не работало работавшее но перенаправление вывода, и все печаталось для экранирования.

7
задан 22 March 2017 в 02:44

2 ответа

Необходимо поместить фоновую команду в () как это:

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
6
ответ дан 23 November 2019 в 06:20

Вам не нужно ; после &, & самостоятельно действия как разделитель команды. Посмотрите раздел "List of commands" в справочник .

Bash, Это выполнит три параллельных ping:

ping -c 3 askubuntu.com & ping -c 3 askubuntu.com & ping -c 3 askubuntu.com &
6
ответ дан 23 November 2019 в 06:20

Другие вопросы по тегам:

Похожие вопросы: