azとAZのパラドックス

azとAZのパラドックス

文字タイプを識別するためにシェルスクリプトを作成しました。

printf "Enter a character: "
read var
case "$var" in
[a-z])
        echo "You entered a lower case alphabet."
        ;;
[A-Z])
        echo "You entered an upper case alphabet."
        ;;
[0-9])
        echo "You entered a digit."
        ;;
?)
        echo "You entered a special simbol."
        ;;
*)
        echo "You entered more then one character."
        ;;
esac

ただし、入力文字が小文字または大文字の場合、出力は次のようになります。

小文字を入力しました。

これを書くと、出力は正しいです。

printf "Enter a character: "
read var
case "$var" in
[A-Z])
        echo "You entered a upper case alphabet."
        ;;
[a-z])
        echo "You entered an lower case alphabet."
        ;;
[0-9])
        echo "You entered a digit."
        ;;
?)
        echo "You entered a special simbol."
        ;;
*)
        echo "You entered more then one character."
        ;;
esac

理由がわかりません。唯一の論理的な答えは、[a-z]小文字と大文字の両方を含むことです。

ベストアンサー1

語彙の順序は地域によって異なります。違いは、「特殊」文字(たとえばäドイツa語の文字ですが、zフィンランド語の「特殊」文字ではない)に限定されません。対照的に、一部のロケールでは、ソートが拡張AaBbCc…[a-z]れる可能性があります[aBbCc…Zz]。 Stephen Chazeras[[:lower:]]が言及したモデルは、[[:upper:]]これらの驚きの影響を受けません。

おすすめ記事