5

引数に大文字または小文字が1つ含まれているかどうか、またはそれ以外のもの(数字または単語など)を確認するスクリプトを作成しようとしています。

これまでのところ、これは完了しました:

if echo $1 | egrep -q '[A-Z]';
    then echo "Uppercase";
elif echo $1 | egrep -q '[a-z]';
    then echo "Lowercase";
else
    echo "FAIL";
fi 

それが文字ではない場合だけでなく、単語または2文字を挿入した場合でも失敗するようにする必要があります。

4

3 に答える 3

2

あなたはとても近かったです!

if echo $1 | egrep -q '^[A-Z]$';
    then echo "Uppercase";
elif echo $1 | egrep -q '^[a-z]$';
    then echo "Lowercase";
else
    echo "FAIL";
fi
  • 特殊文字^$を追加しました。これは、それぞれ行の開始と終了を意味します
  • egrepそこに必要はありません、grep十分です
于 2012-11-20T23:03:52.347 に答える
2

使用case

case "$1" in
    [a-z]) echo First argument is a lower case letter;;
    [A-Z]) echo First argument is an upper case letter;;
    *) echo First argument is not a single letter;;
esac
于 2012-11-20T23:04:06.443 に答える
1

バッシュを使用する場合は、

if [[ $1 == [[:upper:]] ]]; then
    echo "$1 is a single capital letter"
elif [[ $1 == [[:lower:]] ]]; then
    echo "$1 is a single lowercase letter"
else
    echo "$1 is not a letter or is more than 1 char"
fi

二重等号は、右側のパターンと照合するように bash に指示します。

于 2012-11-21T00:45:47.613 に答える