1.06.2基礎
必須引数が不足しているため処理を継続できない。
呼び出し元が失敗と判定できる状態で終了する。
適切な記述はどれか。
× 不正解
exitに非0を指定すると失敗を示して終了する。具体的な値の意味はスクリプト内で一貫して定義する。
詳細解説
誤り
exit 0成功を示すため、引数エラーを呼び出し元が検知できない。
exit 0は成功を報告する。必須引数不足を呼び出し元のifや&&がエラーとして検知できない。
正しい
exit 2非0の終了状態を返し、呼び出し元へ失敗を示す。
exit 2は非0を返してスクリプトを終了する。呼び出し元は失敗として扱え、2を利用方法エラー等に割り当てられる。
誤り
continue 2ループ反復の制御で、スクリプトを失敗終了しない。
continueはループ内で次の反復へ移る制御語である。トップレベルで入力エラーを返して終了する機能ではない。
誤り
shift 2位置引数を2個取り除く操作で、終了状態を指定して終了しない。
shift 2は$1と$2を取り除いて後続引数を繰り上げる。引数不足を解消せず、スクリプトも終了しない。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'exit 2'; printf '%s\n' "$?"期待される結果
2理解のポイント
- 非0は失敗
- exit値を呼び出し元が取得
- 値の意味を文書化
確認時の注意
- 確認環境: POSIX sh / 短命プロセス
- シェルはexitへ渡した値を通常8ビット範囲へ正規化する。
基礎のおさらい
非0状態
1から255の範囲が一般に失敗として扱われる。値ごとの意味はスクリプトの仕様として定める。
診断メッセージ
終了状態に加えて理由を標準エラーへ表示すると、利用者とログから原因を確認しやすい。
問題IDKL-102-926
確認環境POSIX sh / 短命プロセス
最終技術確認2026-08-13
誤り・権利侵害を報告