如何检查$ 1是否包含bash脚本中的特殊字符?

时间:2015-03-05 23:35:57

标签: linux bash scripting

我想检查$1是否包含以下任何特殊字符@#$%&*-=+

用户将运行如下脚本:

testserver@matrix:~> scriptname somer@nd$m

脚本应该检测somer@nd$m是否有任何特殊字符! 感谢

2 个答案:

答案 0 :(得分:3)

通常,要确定某个变量是否包含一组字符的成员,您可以使用带有字符集的Pattern Matching,如bash手册中所述。

[[ $var = *[set]* ]]

在你的情况下,集合组合很棘手。它包含“&”和“ - ”,具有特殊意义。破折号首先出现,或者shell认为字符集为范围。 &符号必须逃脱。所以你必须这样做

[[ $var = *[-@#$%'&'*=+]* ]]

答案 1 :(得分:0)

如果你正在寻找特殊字符的存在,你可以使用

if egrep -q "[@#$%&*-=+]" <<< "$1"
then
    echo "Special Characters"
fi

请注意,虽然在您的示例中,传入somer@nd$m将尝试查找名为m的变量,除非您将参数传递给单引号。