用shell判断参数是否为数字的一个补充方法

回复 收藏
         我们在写shell脚本的时候常常会有这样的需求:脚本需要传入一个数字参数,所以在接收参数前我们需要判断传入的是否是数字,以防止出错。

        看了大家的脚本,采用的思路是用echo+sed,用空字符代替一个字符串中的数字,然后判断输出的字符串是否为空,若为空则为数字,反之则为非数字。 如 a=22 ; b=`echo $a | sed 's/[0-9]//g'` ; [ "$b" = "" ] && echo " a是数字"

        从资料上了解到还有一个小方法,分享给大家。

        它使用测试符号是双引号(必须是双引号),然后用一个 "=~" 连接 , 后面接对应的正则表达式,以测试数字为例

        a=22
       
        if [[ $a =~ ^-?[0-9]+$ ]]  ; then    #^-?[0-9]+$ 是表示一个数字的正则(包含负数)
                echo "a 是数字"
        else
                echo "a不是数字"
        fi

        当然测试的内容除了数字也可以是其它字符串


2016-04-29 20:24 举报
已邀请:

回复帖子,请先登录注册

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