2016-05-19 23 views
1

ユーザからの入力を読み込み、入力が単一の文字と一致するかどうかをチェックするbashスクリプトを作成します。以下はコードです。それはまだ「正しい」と言うI入力の2つの文字bashスクリプトで一文字を一致させる方法

read letter 

if [[ $letter =~ ([a-zA-Z]) ]] 
then 
     echo correct 
fi 

は、出力下記参照:

$ sh tmp.sh 
aa 
correct 

正確に一つの文字が一致する正規表現を作成する方法?

答えて

0

は、あなたも、正規表現を必要としないと、正確に一つのアルファベットにマッチします、ここでグロブパターンを使用することができることを言いました

値に応じて異なるアクションを取ることをお勧めします。簡単なケースステートメントを考えてみましょう。

case $letter in [a-zA-Z]) echo correct;; *) : do nothing;; esac 

これにより、簡単に変更できるようになります

case $letter in 
a) : do something for a;; 
[b-m]) : do something else;; 
[n-zA-Z) : ... ;; 
*) ... ;; 
esac 
2

正規表現ではアンカーが使用されていませんので、[a-zA-Z]の入力と一致しますが、長さが1より大きいものはすべて一致します。あなたが使用し、その後、正規表現を使用する必要がある場合

if [[ $letter == [a-zA-Z] ]] 
then 
    echo 'correct' 
fi 

if [[ $letter =~ ^[a-zA-Z]$ ]] 
then 
    echo 'correct' 
fi 
関連する問題