かべぎわブログ

技術的なことについてかけたらいいな…

シェルスクリプトのcase文でYESorNOの大文字小文字を区別しない方法

シェルスクリプトwhile read -pcaseで対話式のスクリプトを作っているときにちょっとはまったので備忘録的に残しておく。

やりたいこと

スクリプトで以下のように聞かれたときに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の大文字小文字に意味ってあるのだろうか…?

趣味?