1. 程式人生 > >linux的shell指令碼下判斷一個變數值或字串是否為整數

linux的shell指令碼下判斷一個變數值或字串是否為整數

在實際的應用開發中,由於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