linux的shell指令碼下判斷一個變數值或字串是否為整數
阿新 • • 發佈:2019-02-02
在實際的應用開發中,由於shell缺少許多函式庫,所以判斷字串是否為整數就不是一件容易的事兒,那麼這裡介紹一般的用於判斷一個字串是否為整數的方法。
原理:
一、利用expr做計算時變數或字串必須是整數的規則,把一個變數或字串和一個已知的整數(非0)相加,看命令返回的值是否為0.如果為0,就認為加法的變數或字串為整數,否則就不是。
i=5
expr $I + 6 &>/dev/null
echo $?
如果輸出的是0,那麼表明i是整數,反之則表示為非整數。其中$?表示的是最後執行的程式碼的返回值
上述判斷中,有&>表示的就是不管是什麼,都重定向到/dev/null中。
二、使用sed加正則表示式
思路:刪除一個字串中的所有數字,看字串的長度是否為0,如果不為0,則不是整數。
if [ -n "`echo char | sed 's/[0-9]//g'`" ]
then
echo "char"
else
echo "number"
fi
三、用變數的子串替換
思路:如果num的長度不為0,並且把num中的非數字部分刪除,然後看結果是不是等於num本身,如果兩者成立,那麼就是數字,反之亦然。
if [ -n "$num" -a "$num" = "${num//[^0-9]/}" ]
then
echo "char"
else
echo "number"
fi