web-dev-qa-db-ja.com

シェルスクリプトを並列化する

私は次の行を持っています:

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ループが機能しないのはなぜですか?

2
Iris Pader
for length in "$(ls $OUT_SAMPLE)"

書き直す必要があります

for length in $(ls $OUT_SAMPLE)

実際、単一の値でループしています。

ループしている値は次の方法で確認できます。

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

二重引用符なしで同じことを試してください!

1
freedge