문자 유형을 식별하기 위해 쉘 스크립트를 작성했습니다.
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:]]
이러한 놀라움의 영향을 받지 않습니다.