关于“=~” 匹配的问题??

回复 收藏
本帖最后由 xueyongbo 于 2015-12-6 16:05 编辑

我的测试脚本:
  1. read -p "Please input a number1: " num
  2. if [[ "$num" =~ "[0-9]+" ]];then
  3.         echo  "It's a number."
  4. else
  5.         echo "It's not a number!!"
  6. fi
  7. if [[ "$num" =~ "[^0-9]+" ]];then
  8.         echo  "It's not a number."
  9. else
  10.         echo "It's a number!!"
  11. 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]+" 的形式将数字之外的字符匹配到。。
  1. read -p "Please input a number1: " num
  2. #while [[ "$num" =~ "[^0-9]+" ]]
  3. while [ $(echo $num | grep -E "[^0-9]+") ]
  4. do
  5.         echo "It's not a number!!retry"
  6.         read -p "Please input a number11: " num
  7. done
  8. 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




2015-12-06 16:05 举报
已邀请:
0

阿铭 管理员

赞同来自:

shell里面默认貌似是不支持  =~  。  http://bbs.chinaunix.net/thread-1452004-1-1.html   这个东西有点难理解,为什么非要这样用呢,直接用sed,grep,awk等岂不是更好。

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: