本帖最后由 xueyongbo 于 2015-12-6 16:05 编辑
我的测试脚本:测试结果:
[root@master shell]# sh 1.sh
Please input a number1: 45+
It's not a number!!
It's a number!! ## 45+ 匹配"[^0-9]+" 为假
[root@master shell]# sh 1.sh
Please input a number1: asegha
It's not a number!!
It's a number!!
问题:
"=~" 如何匹配数字之外的字符?
使用 grep -E "[^0-9]+" 可以使用"[^0-9]+" 的形式将数字之外的字符匹配到。。测试:
[root@master shell]# sh 1.sh
Please input a number1: 45+
It's not a number!!retry
Please input a number11: ds54
It's not a number!!retry
Please input a number11: 475
475
我的测试脚本:
- read -p "Please input a number1: " num
- if [[ "$num" =~ "[0-9]+" ]];then
- echo "It's a number."
- else
- echo "It's not a number!!"
- fi
- if [[ "$num" =~ "[^0-9]+" ]];then
- echo "It's not a number."
- else
- echo "It's a number!!"
- fi
[root@master shell]# sh 1.sh
Please input a number1: 45+
It's not a number!!
It's a number!! ## 45+ 匹配"[^0-9]+" 为假
[root@master shell]# sh 1.sh
Please input a number1: asegha
It's not a number!!
It's a number!!
问题:
"=~" 如何匹配数字之外的字符?
使用 grep -E "[^0-9]+" 可以使用"[^0-9]+" 的形式将数字之外的字符匹配到。。
- read -p "Please input a number1: " num
- #while [[ "$num" =~ "[^0-9]+" ]]
- while [ $(echo $num | grep -E "[^0-9]+") ]
- do
- echo "It's not a number!!retry"
- read -p "Please input a number11: " num
- done
- echo $num
[root@master shell]# sh 1.sh
Please input a number1: 45+
It's not a number!!retry
Please input a number11: ds54
It's not a number!!retry
Please input a number11: 475
475
0
shell里面默认貌似是不支持 =~ 。 http://bbs.chinaunix.net/thread-1452004-1-1.html 这个东西有点难理解,为什么非要这样用呢,直接用sed,grep,awk等岂不是更好。
编辑回复