我想知道什么是检查一个
$str
以最好的方式看它是否包含任何字符
[email protected]#$%^&*()_+
我想用ASCI值但有点糊涂了关于究竟如何,将可以实现的。
或者如果有更简单的方法来检查字符串值
我想知道什么是检查一个
$str
以最好的方式看它是否包含任何字符
[email protected]#$%^&*()_+
我想用ASCI值但有点糊涂了关于究竟如何,将可以实现的。
或者如果有更简单的方法来检查字符串值
匹配它与glob。你只需要逃避的外壳,否则认为特殊的人物:
#!/bin/bash
str='some text with @ in it'
if [[ $str == *['!'@#\$%^\&*()_+]* ]]
then
echo "It contains one of those"
fi
使用EXPR
str='some text with @ in it'
if [ `expr "$str" : ".*[[email protected]#\$%^\&*()_+].*"` -gt 0 ];
then
echo "This str contain sspecial symbol";
fi
这是便携式冲等人。和恕我直言更优雅。
case $str in
*['!'@#$%^&*()_+]*) echo yup ;;
esac
我想一个简单的做法就像删除任何字母数字字符和空格。 echo "$str" | grep -v "^[a-zA-Z0-9 ]*$"
如果你有一堆字符串,然后把它们放在一个文件,如strFile和以下命令将做必要的。
cat strFile | grep -v "^[a-zA-Z0-9 ]*$"
如果你只是想检查非字母数字,顺便说一下,这将是'[$海峡= * [^ [:alnum:]] *]'。 – 2014-10-29 03:13:14
...或者检查任何/各种标点,'[[$ str = * [[:punct:]] *]]'。一般来说,使用POSIX字符类(Linux中的man 7 regexp中的任何字符类都可以工作,即使glob样式不是POSIX RE),而不是一个一个地列出字符是个好主意,如果有一个适合你(或者说否定)的角色类。 – 2014-10-29 03:15:05