created: 2020-04-30T09:01:37.000Z
bashのfor文の中身を並列処理させる
こんなスクリプトがあったとして
for i ($find ./src); do
somecommand $i
done
forの中身 (somecommand) を並列で実行したい場合はこうすればよい
for i ($find ./src); do
somecommand $i &
done
wait
いままでxargsを使ったりもしてたが、waitを使う方が分かりやすくてよい。
ただし、ループの数が数十とかで多くなってくるとプロセスを立ち上げすぎて遅くなったりするので、そういうときは xargs -P
でやるのがよさそうではある。
参考
pidを指定しなかった場合は,実行中のすべての子プロセスの完了を待ちます