回声“大家好!”
我需要检查linux脚本的输入参数是否符合我的安全需求。它应该只包含a-z字符,0-9位数字,一些空格和“+”符号。例如:“3分钟做r51 + r11”
这对我没用:
if grep -v '[0123456789abcdefghijklmnopqrstuvwxyz+ ]' /tmp/input; then
echo "THIS DOES NOT COMPLY!";
fi
任何线索?
答案 0 :(得分:0)
您想测试整行(假设/ tmp / input中只有一行),而不仅仅是单个字符是否匹配,因此您需要将其锚定到行的起始端。试试这个正则表达式:
^[0123456789abcdefghijklmnopqrstuvwxyz+ ]*$
请注意,您可以使用范围来缩短它:
^[0-9a-z+ ]*$
答案 1 :(得分:0)
你在说grep:
Show me every line that does not contain [0123456789abcdefghijklmnopqrstuvwxyz+ ]
这只会显示不包含上述字符的行。因此,仅包含()
等其他字符的行会匹配,但asdf()
将不匹配。
请尝试让grep向您显示上面列表中包含 charachter 不的每一行:
if grep '[^0-9A-Za-z+ ]' file; then
如果您发现的不是数字,字母或加号,那么。