これは私が書いた私のコードです。 if Elifを使用して、読み取った文字が大文字、小文字、特殊記号のいずれであるかを確認する簡単なコードが必要です。
echo "enter a char"
read c
if [[ $c == [A-Z] ]];
then
echo "upper"
Elif [[ $c == [a-z] ]];
then
echo "lower"
else
echo "Digit or special symbols!"
fi
以下は、文字を入力した後に受け取った出力です
enter a char
A
upper
enter a char
a
Digit or special symbols!
aravind@bionic-beaver:~/Desktop$ ./1.sh
enter a char
1
Digit or special symbols!
正規表現テストを試してください:
read -p "Type a character" c
if [[ "$c" =~ [a-z] ]]; then
echo "lowercase"
Elif [[ "$c" =~ [A-Z] ]]; then
echo "uppercase"
else
echo "Non-alphabetic"
fi
$IFS
を空にして-r
オプションを追加しない限り、 read
は非常に特殊な方法で入力行を読み取ります です。
たとえば、ユーザーが" \x "
を入力し、デフォルト値が$IFS
の場合、$c
にはユーザーが入力したものではなくx
が含まれます。
また、[a-z]
は小文字とは一致しません。ロケールのa
とz
の間のあらゆる種類に一致します(Shell間の動作に多少の違いがあります。たとえば、bash
(多くのロケールでは、AとYの間の英語の文字を含みます)。一部のロケールおよび一部のツールでは、文字のシーケンスに一致することもできます。
ここでは、おそらく次のようになります。
printf 'Please enter a character: '
IFS= read -r c
case $c in
([[:lower:]]) echo lowercase letter;;
([[:upper:]]) echo uppercase letter;;
([[:alpha:]]) echo neither lower nor uppercase letter;;
([[:digit:]]) echo decimal digit;;
(?) echo any other single character;;
("") echo nothing;;
(*) echo anything else;;
esac
(その構文はPOSIX sh
構文なので、bash
をインストールする必要すらありません)。
英語の文字(発音区別符号なしのラテン文字からの文字)に限定したい場合は、個別に名前を付ける必要があります。
([abcdefghijklmnopqrstuvwxyz]) echo English lowercase letter;;
または、read
の後とcase
ステートメントの前にexport LC_ALL=C
を付けてロケールをCに修正しますが、(?)
テストは一部の文字を誤って解釈する可能性があるため無効です文字のシーケンスとして。たとえば、UTF-8 é
は、Cロケールでは2文字と見なされます。
while read -r line; do
[[ "${line:0:1}" =~ [[:upper:]] ]] && echo "Started with upper: $line" || echo "$line";
done</path/to/file
Pythonで試してみましたが、それもうまくいきました
#!/usr/bin/python
input=raw_input("enter the user input")
k=input.isalpha()
alph_out=str(k)
if alph_out == "True":
print "{0} is alphabet".format(input)
upper_lower=input.isupper()
up_lo_deci=str(upper_lower)
if up_lo_deci == "True":
print "{0} is Capital letter".format(input)
Elif up_lo_deci == "False":
print "{0} is lower letter".format(input)
Elif alph_out == "False":
print "{0} is digit or symbole".format(input)
出力
プラヴィーン:〜/
t1$ python u.py
enter the user input
10
10 is digit or symbole
ter the user input
P
P is alphabet
P is Capital letter
aveen@praveen:~/t1$ python u.py
enter the user input
e
e is alphabet
e is lower letter