bash – shell脚本,for循环,循环等待执行迭代的命令

我有一个带有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.

点赞