シェルスクリプトでwhile read -p
とcase
で対話式のスクリプトを作っているときにちょっとはまったので備忘録的に残しておく。
やりたいこと
スクリプトで以下のように聞かれたときにy
でもYES
でもYes
でもいいよって判定させたい。
ほんとうにいいですか? [y/n]
つくってみる
while read -p "ほんとうにいいですか? [y/n] " yes_or_no ; do case ${yes_or_no} in [Yy]|[Yy][Ee][Ss] ) echo "やったな" exit ;; [Nn]|[Nn][Oo] ) echo "やらなかったな" exit ;; * ) echo "yesかnoかでこたえてほしいのです" ;; esac done
このように [Yy]|[Yy][Ee][Ss]
とすればY
でもy
でもYES
でもyes
でもいいよって判定になる!
関係ないけど
YesかNoかを尋ねるときの[Y/n]
とか[y/N]
とかこのYとNの大文字小文字に意味ってあるのだろうか…?
趣味?