我有一个带有for循环的
shell脚本.在迭代之前循环是否等待在其体内执行命令?
提前致谢
这是我的代码.命令会顺序执行还是并行执行?
for m in "${mode[@]}"
do
cmd="exec $perlExecutablePath $perlScriptFilePath --owner $j -rel $i -m $m"
$cmd
eval "$cmd"
done
最佳答案 假设您没有后台命令,那么是.
例如:
for i in {1..10}; do cmd; done
在继续循环之前等待cmd完成,而:
for i in {1..10}; do cmd &; done
没有.
如果你想并行运行你的命令,我建议你改变你的循环:
for m in "${mode[@]}"
do
"$perlExecutablePath" "$perlScriptFilePath" --owner "$j" -rel "$i" -m "$m" &
done
这会在后台运行每个命令,因此它不会等待一个命令在下一个命令启动之前完成.
另一种方法是查看专为此目的而设计的GNU Parallel.