在后台将输出重定向到文件时 for 循环中出现语法错误

在后台将输出重定向到文件时 for 循环中出现语法错误

我正在尝试使用脚本解析一些日志文件,由于所有文件都可以独立解析,因此我尝试在后台运行它们。我正在使用以下命令,但随后出现了语法错误:

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

这也有效,但输出重定向不起作用,所有内容都被打印到屏幕上。

答案1

;后面不需要有&&本身充当命令分隔符。请参阅Bash 参考手册

这将执行三个并发ping

ping -c 3 askubuntu.com & ping -c 3 askubuntu.com & ping -c 3 askubuntu.com &

答案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

相关内容