case文で分岐を整理する
選択肢が多い分岐は、if の連続より case が読みやすい。case "$1" in start) …;; stop) …;; *) …;; esac のように値ごとに処理を並べる。引数で動きを変えるスクリプトの定番形だ。
「引数が start ならこれ、stop ならこれ、それ以外はエラー」——こういう多方向の分岐は、if を何段も重ねると読みにくい。そんなときは case が効く。
🔀 値ごとに処理を並べる
case 値 in パターン) 処理 ;; … esac の形で、値がどのパターンに当てはまるかで処理を選ぶ。;; がひとつの枝の区切り、*) がどれにも当てはまらない場合(既定)だ。
▶
例case "$1" in
start) echo 起動 ;;
stop) echo 停止 ;;
*) echo "使い方: $0 {start|stop}" ;;
esac
✳ パターンが使える
パターンにはワイルドカードが効く。*.txt) でテキスト全般、a|b|c) で複数の候補をまとめて受けられる。柔らかく振り分けられるのが case の強みだ。
🔗
たとえ郵便物の仕分け棚のようなもの。宛先(値)を見て、対応する棚(枝)へ落としていく。棚が無ければ「その他」箱へ。
💡
ポイントサービス起動スクリプトやコマンドのサブコマンド処理は、ほぼこの case 形。引数で動きを変える定番の骨格として覚えておく。
✓
コツ最後に必ず *) を置いて「想定外の入力」を拾う。使い方の案内を出すと、使う人にも自分にも親切だ。