并行化 shell 脚本

并行化 shell 脚本

我有以下一行:

for length in "$(ls $OUT_SAMPLE)"
do $CODES/transform_into_line2.rb -c $OUT_SAMPLE -p 0 -f $length & 
done

因此,它应该并行化 for 循环,但不知何故它仍然按顺序运行它。但是,如果我执行以下操作:

 $CODES/transform_into_line2.rb -c $OUT_SAMPLE -p 0 -f blabla.txt &  $CODES/transform_into_line2.rb -c $OUT_SAMPLE -p 0 -f blabla2.txt

它确实并行运行。为什么 for 循环不起作用?

答案1

for length in "$(ls $OUT_SAMPLE)"

应该重写

for length in $(ls $OUT_SAMPLE)

事实上,您正在循环单个值。

您可以验证正在循环的值:

for length in "$(ls $OUT_SAMPLE)" ; do
  echo x$length 
done

尝试同样的方法而不使用双引号!

相关内容