1.06.2標準
変数answerがyes、YES、yのいずれかならacceptedと表示する。
3つのパターンを同じ処理へまとめる。
適切なcase節はどれか。
× 不正解
caseではpattern1|pattern2)で複数パターンを同じ節へまとめられる。最初に一致した節が実行される。
詳細解説
正しい
yes|YES|y) echo accepted ;;縦棒で3パターンをまとめ、右括弧の後に処理を書く。
yes|YES|yは3つの代替パターンを同じ節へ対応させる。answerがどれかに一致すればacceptedを実行する。
誤り
yes,YES,y) echo accepted ;;caseの代替パターンはカンマでは区切らない。
カンマはcaseのパターン区切りにならず、全体がカンマを含む1パターンのように扱われる。3候補へ分かれない。
誤り
yes && YES && y) echo accepted ;;&&はコマンドリスト用でパターン区切りではない。
&&は実行したコマンドの終了状態に基づく接続演算子である。caseのパターン一覧内では代替候補を表さない。
誤り
[yes YES y]) echo accepted ;;角括弧はこのように文字列候補一覧を表さない。
角括弧はglobパターンで1文字の候補集合を作るために使う。yes、YES、yという3語のいずれかを表す記法ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'answer=YES; case $answer in yes|YES|y) echo accepted ;; *) echo rejected ;; esac'期待される結果
accepted理解のポイント
- |は代替パターン
- )の後が処理
- esacで終了
確認時の注意
- 確認環境: POSIX sh / 状態変更なし
- 大文字小文字を区別するため、必要な表記をパターンとして明示する。
基礎のおさらい
最初の一致
caseは上からパターンを評価し、最初に一致した節を実行する。
既定節
*)を最後に置くと、それまでのどのパターンにも一致しない値を処理できる。
問題IDKL-102-929
確認環境POSIX sh / 状態変更なし
最終技術確認2026-08-13
誤り・権利侵害を報告