【发布时间】:2013-01-02 23:34:36
【问题描述】:
我想检查一个字符串是否至少有一个 字母字符? 一个正则表达式可能是:
"^.*[a-zA-Z].*$"
但是,我想判断一个字符串是否至少有一个 字母字符? 所以我想用,比如
if [ it contains at least one alphabetic character];then
...
else
...
fi
所以我不知道如何使用正则表达式
我试过了
if [ "$x"=~[a-zA-Z]+ ];then echo "yes"; else echo "no" ;fi
or
if [ "$x"=~"^.*[a-zA-Z].*$" ];then echo "yes"; else echo "no" ;fi
用x="1234"测试,上面的脚本输出结果都是"yes",所以是错误的
如何实现我的目标?谢谢!
【问题讨论】:
-
我想你在找this。
-
有两个问题:需要使用
[[和]]而不是[和];并且您需要在=~运算符周围留有空格,否则 bash 会将其视为单个长字符串的一部分。 -
@Anders Johansson,你说得对,现在可以了,但是为什么我需要双 [],你能解释一下吗?谢谢!
-
@user1944267,
[内置函数(参见man [)远不如[[(参见man bash;例如[[支持更多运算符和自然构造,如 @987654335 @ 和||具有它们通常的含义,而[需要-a和-o带有显式括号才能获得相同的结果)。=~运算符仅存在于[[中。