シェルでコマンド実行結果で判定処理
シェルスクリプトでコマンドの実行結果に基づいて判定処理を行う方法について説明します。
シェルスクリプトでは、コマンドの実行結果(終了ステータス)に基づいて条件分岐を行うことができます。
終了ステータスは、コマンドが成功した場合は0、失敗した場合は0以外の値が返されます。
以下に、コマンドの実行結果に基づく判定処理の基本的な方法を示します。
基本構文
シェルスクリプトでコマンドの終了ステータスに基づいて条件分岐を行う基本構文は以下の通りです:
command if [ $? -eq 0 ]; then # コマンドが成功した場合の処理 else # コマンドが失敗した場合の処理 fi
ここで、$? は直前のコマンドの終了ステータスを返します。
- eq は整数の比較演算子で、0 と比較して成功・失敗を判定します。
例:ファイルの存在確認
以下は、ファイルの存在を確認し、存在する場合と存在しない場合で異なるメッセージを表示する例です。
#!/bin/bash file="example.txt" if [ -e "$file" ]; then echo "ファイル $file は存在します。" else echo "ファイル $file は存在しません。" fi
例:コマンドの成功・失敗判定
次のスクリプトは、ls コマンドの結果に基づいてディレクトリのリスト表示に成功したかどうかを判定します。
#!/bin/bash ls /some/directory if [ $? -eq 0 ]; then echo "ディレクトリのリスト表示に成功しました。" else echo "ディレクトリのリスト表示に失敗しました。" fi
例:複数のコマンドの結果に基づく判定
複数のコマンドを実行し、それぞれの終了ステータスに基づいて処理を行うこともできます。
以下の例では、2つのコマンドが両方成功した場合にメッセージを表示します。
#!/bin/bash command1 status1=$? command2 status2=$? if [ $status1 -eq 0 ] && [ $status2 -eq 0 ]; then echo "両方のコマンドが成功しました。" else echo "いずれかのコマンドが失敗しました。" fi
このように、シェルスクリプトではコマンドの終了ステータスを利用して条件分岐を行うことで、スクリプトの処理を制御することができます。
状況に応じて適切な判定処理を選択してください。