文字タイプを識別するためにシェルスクリプトを作成しました。
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:]]
これらの驚きの影響を受けません。