5

我正在尝试制作一个脚本来检查一个参数是否有一个大写或小写字母,或者它是否有其他任何东西(例如一个数字或一个单词。)

到目前为止已经完成了:

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
  • 我刚刚添加了特殊字符^& $,分别表示行首行尾
  • 不需要egrepgrep就够了
于 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

如果你使用 bash,

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 回答