如何检查参数在shell中是否包含单个字符

时间:2012-11-20 23:02:02

标签: shell grep arguments character

我正在尝试创建一个脚本来检查参数是否包含单个大写或小写字母,或者是否包含其他任何内容(例如数字或单词)。

到目前为止完成了这件事:

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

不仅要让它失败,不仅是因为它不是一封信,而且如果我插入一个字或两个字母。

3 个答案:

答案 0 :(得分: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就足够了

答案 1 :(得分: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

答案 2 :(得分: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匹配右侧的模式。