web-dev-qa-db-ja.com

シェルスクリプトで2つのコマンドを同時に実行することは可能ですか?

コマンドラインで&を使用して、コマンドをバックグラウンドで実行できることを知っています。しかし、スクリプトでそれを実行できるかどうか疑問に思っています。

次のようなスクリプトがあります。

date_stamp=$(date +"%Y-%m-%d" --date='yesterday')
shopt -s extglob

cd /my/working/directory/

sh ./stay/get_it_ios.sh
sh ./stay/get_it_mix.sh

cd stay
Zip  ../stay_$date_stamp.Zip  ./*201*

rm ./stay/!(*py|*sh)

さらに、sh ./stay/get_it_ios.shsh ./stay/get_it_mix.shを一緒に実行して、より正確なデータを取得したいと考えています。シェルスクリプトのスコープでこれを行うことは可能ですか?

10
Zen

はい、そうです。 2つのことを同時に行い、両方が完了するのを待つ場合は、次のようなことができます。

sh ./stay/get_it_ios.sh &  PIDIOS=$!
sh ./stay/get_it_mix.sh &  PIDMIX=$!
wait $PIDIOS
wait $PIDMIX

次に、スクリプトは両方のスクリプトを並行して実行し、続行する前に両方のスクリプトが完了するのを待ちます。

16
DopeGhoti