如何检查参数在shell中是不是有单个字符
Posted
技术标签:
【中文标题】如何检查参数在shell中是不是有单个字符【英文标题】:How to check if an argument has a single character in shell如何检查参数在shell中是否有单个字符 【发布时间】:2012-11-09 03:22:14 【问题描述】:我正在尝试编写一个脚本来检查参数是否有单个大写或小写字母,或者是否有其他任何内容(例如数字或单词。)
到目前为止已经完成了:
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 个字母,都需要让它失败。
【问题讨论】:
感谢您提出的清晰且格式正确的问题。新的到来的良好开端。 =) 第一个问题做得很好!没见过太多这样的。 :) 恐怕我不知道你的问题的答案。 :( 你的外壳是什么?是 bash 吗? 【参考方案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
我刚刚添加了特殊字符^
和$
,分别表示行首和行尾
那里不用egrep
,grep
就够了
【讨论】:
尴尬了QQ应该是自己搞定的。非常感谢! 请注意,如果$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
【讨论】:
还不能用例,老师要求所以...还是谢谢你:)【参考方案3】:如果你使用 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 匹配右侧的模式。
【讨论】:
是的,也可以,但问题是它必须知道它是高还是低,并显示出来。以上是关于如何检查参数在shell中是不是有单个字符的主要内容,如果未能解决你的问题,请参考以下文章