Linux: シェルスクリプトの終了ステータスを正確に取得する方法

Linuxのシェルスクリプトは、実行後に終了ステータスを返します。この終了ステータスは、スクリプトが正常に終了したか、何らかのエラーが発生したかを示す重要な情報源です。この記事では、シェルスクリプトの終了ステータスの取得方法とその応用について詳しく解説します。

目次

シェルスクリプトの終了ステータスとは

シェルスクリプトやコマンドが実行された後、シェルは常に終了ステータスを返します。これは、0から255の整数で、0は正常終了を示し、それ以外の値はエラーを示すことが一般的です。

終了ステータスの取得方法

シェルスクリプトやコマンドの終了ステータスは、$?変数を使用して取得できます。

echo "Hello, World!"
echo $?  # 前のコマンドの終了ステータスを表示

上記のスクリプトは、”Hello, World!”を表示した後、そのコマンドの終了ステータスを表示します。正常に実行されると、0が表示されます。

応用例

1. 終了ステータスを利用したエラーハンドリング

シェルスクリプトの実行中にエラーが発生した場合に、特定の処理を行うことができます。

#!/bin/bash
command_that_might_fail
if [ $? -ne 0 ]; then
    echo "エラーが発生しました"
    exit 1
fi

2. 複数のコマンドの終了ステータスをチェック

複数のコマンドを実行した場合、それぞれの終了ステータスをチェックして、全てのコマンドが正常に終了したか確認することができます。

#!/bin/bash
command1
status1=$?
command2
status2=$?
if [ $status1 -ne 0 ] || [ $status2 -ne 0 ]; then
    echo "1つまたは複数のコマンドでエラーが発生しました"
    exit 1
fi

3. 終了ステータスに基づいたログの記録

スクリプトの終了ステータスに基づいて、ログファイルに情報を記録することができます。

#!/bin/bash
./my_script.sh
if [ $? -eq 0 ]; then
    echo "正常に終了しました" >> /var/log/my_script.log
else
    echo "エラーが発生しました" >> /var/log/my_script.log
fi

4. サーバーモニタリングに終了ステータスを使用

サーバーのモニタリングツールを利用して、スクリプトやコマンドの終了ステータスに基づいてアラートを送信することができます。

#!/bin/bash
ping -c 1 example.com
if [ $? -ne 0 ]; then
    send_alert "example.comへのpingが失敗しました"
fi

まとめ

Linuxのシェルスクリプトの終了ステータスは、スクリプトの実行結果を知る上で非常に役立つ情報です。この終了ステータスを適切に取得し、エラーハンドリングやモニタリングなどのタスクに応用することで、システムの運用をより安全かつ効率的に行うことができます。

created by Rinker
オライリージャパン
¥3,080 (2024/11/22 17:53:11時点 Amazon調べ-詳細)

コメント

コメントする

目次