シェルスクリプトで前の処理が終了するのを待ってから処理を実行する方法
目次
スポンサードリンク
シェルスクリプトで前の処理の終了を待つ方法として、wait コマンドを使う方法を解説します。
wait コマンドを使う方法
waitコマンドは引数で指定したプロセスIDまたはジョブIDを持つプロセスが終了するまで待つコマンドです。 引数を省略した場合は、現在のシェルから実行された全ての子プロセスが終了するのを待ちます。
waitコマンドの基本的な構文は以下です。
# プロセスID 1234 の終了を待つ
wait 1234
# ジョブ番号2 の終了を待つ
wait %2
# 引数なしの場合はすべての子プロセスが終了するのを待つ
wait
以下サンプルコードは、echo 1 を実行した後、sleep 3 を末尾に & をつけ実行することでバックグラウンドで実行しています。
バックグラウンドで実行するので、waitコマンドがない場合は、echo 1 の後すぐに echo 2 が実行されます。 以下サンプルコードでは、引数なしのwaitコマンドがあるので、バックグラウンドで実行している sleep 3 が完了するのを待ってから、echo 2 が実行されます。
#!/bin/bash
# echoを実行
echo 1
# バックグラウンドでsleepを実行
sleep 3 &
# 子プロセスすべてが終了するまで待機
wait
echo 2
exit 0
シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。
リンク
最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。
リンク
Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】
Search
Recent Posts
- カーネル更新やパッケージのパッチ適用後、OSの再起動が必要か確認するLinuxコマンド(needs-restarting)
- OpenSSHのエラー「bad ownership or modes for chroot directory component」の原因と解消方法
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法