我想检查$1
是否包含以下任何特殊字符@#$%&*-=+
用户将运行如下脚本:
testserver@matrix:~> scriptname somer@nd$m
脚本应该检测somer@nd$m
是否有任何特殊字符!
感谢
答案 0 :(得分:3)
通常,要确定某个变量是否包含一组字符的成员,您可以使用带有字符集的Pattern Matching,如bash手册中所述。
[[ $var = *[set]* ]]
在你的情况下,集合组合很棘手。它包含“&”和“ - ”,具有特殊意义。破折号首先出现,或者shell认为字符集为范围。 &符号必须逃脱。所以你必须这样做
[[ $var = *[-@#$%'&'*=+]* ]]
答案 1 :(得分:0)
如果你正在寻找特殊字符的存在,你可以使用
if egrep -q "[@#$%&*-=+]" <<< "$1"
then
echo "Special Characters"
fi
请注意,虽然在您的示例中,传入somer@nd$m
将尝试查找名为m
的变量,除非您将参数传递给单引号。