終了ステータスコードの使用
終了ステータスコードは、コマンドまたはスクリプトが正常に完了したかどうかを示すために返される数値です。Linux および Unix 系システムでは、以下の通りです。
- 終了ステータス
0
は成功を示します。
- ゼロ以外の終了ステータス(1 - 255)はエラーまたはその他の例外的な状態を示します。
特定の条件に基づいて異なる終了ステータスコードを使用するスクリプトを作成してみましょう。
まず、新しいスクリプトファイルを作成します。
cd ~/project
touch status_codes.sh
nano でファイルを開きます。
nano status_codes.sh
以下の内容を追加します。
#!/bin/bash
## Demonstrating exit status codes
## Check if a filename was provided as an argument
if [ $## -eq 0 ]; then
echo "Error: No filename provided"
echo "Usage: $0 <filename>"
## Exit with status 1 (general error)
exit 1
fi
filename=$1
## Check if the file exists
if [ ! -f "$filename" ]; then
echo "Error: File '$filename' not found"
## Exit with status 2 (file not found)
exit 2
fi
## Check if the file is readable
if [ ! -r "$filename" ]; then
echo "Error: File '$filename' is not readable"
## Exit with status 3 (permission denied)
exit 3
fi
## If we get here, everything is fine
echo "File '$filename' exists and is readable"
## Exit with status 0 (success)
exit 0
ファイルを保存し(Ctrl+O
、Enter
)、nano を終了します(Ctrl+X
)。
スクリプトを実行可能にします。
chmod +x status_codes.sh
では、さまざまなシナリオでこのスクリプトをテストしてみましょう。
まず、引数を指定せずにスクリプトを実行します。
./status_codes.sh
以下のように表示されるはずです。
Error: No filename provided
Usage: ./status_codes.sh <filename>
スクリプトはステータスコード 1 で終了しました。特殊変数 $?
を使用して、最後のコマンドの終了ステータスを確認できます。
echo $?
以下のように表示されるはずです。
1
次に、テストファイルを作成して、再度スクリプトを実行します。
echo "This is a test file" > testfile.txt
./status_codes.sh testfile.txt
以下のように表示されるはずです。
File 'testfile.txt' exists and is readable
終了ステータスを確認します。
echo $?
以下のように表示されるはずです。
0
これは、スクリプトが正常に完了したことを示しています。
最後に、存在しないファイルを指定して試してみましょう。
./status_codes.sh nonexistent_file.txt
以下のように表示されるはずです。
Error: File 'nonexistent_file.txt' not found
終了ステータスを確認します。
echo $?
以下のように表示されるはずです。
2
これは、異なるタイプのエラーを示すために異なる終了ステータスコードを使用できることを示しています。