shell 判斷字串是否為數字

來源:互聯網
上載者:User
#!/bin/bash          ## 方法1
a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers

    第一個-n是shell的測試標誌,對後面的串"`sed -n '/^[0-9][0-9]*$/p'`" 進行測試,如果非空,則結果為真。      sed預設會顯示所有輸入行資訊的,sed 的“-n”選項是讓sed不要顯示,而只顯示我們所需要的內容:即後面的運算式所匹配的行,這是通過運算式中加入“p”命令來實現的。
    /^[0-9][0-9]*$/他的含義是匹配至少由一位元字構成的行       ## 方法2, 可以,不過不是bash實現的,是使用了grep的正則   #if grep '^[[:digit:]]*$' <<< "$1";then   #    echo "$1 is number."   #else   #    echo 'no.'   #fi         ## 方法3   #if [ "$1" -gt 0 ] 2>/dev/null ;then   #    echo "$1 is number."   #else   #    echo 'no.'   #fi         ## 方法4,case   #case "$1" in   #    [1-9][0-9]*)    #        echo "$1 is number."   #        ;;   #    *)     #        ;;   #esac         ## 方法5,awk   #echo $1| awk '{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'         ## 方法5,awk   #if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ];then   #    echo "$1 is number."   #else   #    echo 'no.'   #fi          ## 方法6,expr   expr $1 "+" 10 &> /dev/null   if [ $? -eq 0 ];then       echo "$1 is number"   else       echo "$1 not number"   fi  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.