105.2基礎
引数が不正な場合、スクリプト全体を終了状態2で直ちに終了する。
適切な記述はどれか。
× 不正解
exit Nは現在のシェルを状態Nで終了する。関数から呼出元へ戻るreturnや、反復を抜けるbreakとは制御範囲が異なる。
詳細解説
誤り
return 2関数またはsourceされたファイルから戻る用途で、直接実行したスクリプトのトップレベルでは不適切な場合がある。
誤り。returnは関数またはsourceされたスクリプトの呼出元へ制御を戻すもので、直接実行中のトップレベル終了にはexitを使う。
誤り
break 2ループを2段抜ける指定で、終了状態2でスクリプト全体を終える意味ではない。
誤り。break 2は入れ子になったループから抜ける深さを指定し、プロセスの終了状態2を設定する意味ではない。
正しい
exit 2現在のシェルスクリプトを指定した終了状態2で終了する。
正しい。exit 2は現在のスクリプトを直ちに終了し、呼出元へ終了状態2を返す。
誤り
shift 2位置パラメータを2個取り除くが、スクリプトを終了しない。
誤り。shift 2は$1と$2を取り除いて後続を繰り上げるだけで、スクリプトの実行を終了しない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c 'exit 2'; status=$?; printf '%s\n' "$status"期待される結果
2理解のポイント
- exitはシェル全体
- 数値が終了状態
- returnは関数等
確認時の注意
- 確認環境: GNU Bash 5.2 / 短命シェル
基礎のおさらい
終了値範囲
シェルの終了状態は一般に0から255で扱われ、0は成功、非0はエラーや特別な結果に用いる。
最後のコマンド
exitへ数値を渡さない場合は直前のコマンドの終了状態を使うため、意図する値は明示すると分かりやすい。
問題IDKP-105-636
確認環境GNU Bash 5.2 / 短命シェル
最終技術確認2026-08-13
誤り・権利侵害を報告