シェルスクリプトの並列化

シェルスクリプトの並列化

次の行があります。

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

二重引用符を使用せずに同じアプローチを試してください。

おすすめ記事