shell指令碼中如何判斷乙個變數是數字還是字串,其實本身shell指令碼中的所有變數值都是字串,其中的數字也是數字字串,只是人為的增加了數字的概念,具體可以參考如下內容。
1、判斷乙個變數的值是否為整數:
可以借助於grep命令,結合正規表示式,整數是有[0-9]這10個數字組成,如果字串中有不是這10個數字的字元即表示不是整數,用正規表示式表示為[^0-9],編寫**如下:
while truedoread -p "
input value:
" var;
if [[ $var == q || $var == q ]];then
exit;
fiecho
"$var
" | grep [^0-9] >/dev/null && echo
"$var is not number
" || echo
"$var is number
"done
2、判斷乙個變數的值是否為小數:
根據上面**,當輸入1.2的時候,就不能判斷為乙個數了,要保證帶小數點的數也能正常判斷,可以借助於sed命令,通過其s替換操作,將變數值的「."替換掉即可。只要在上面的倒數第二條echo命令改為:
echo"$var
" |sed
's/\.//g
' | grep [^0-9] >/dev/null && echo
"$var is not number
" || echo
"$var is number
"
3、判斷乙個變數的值是否為正數或者負數:
根據上一步**,當輸入-1.2的時候,就不能判斷為乙個數了,要保證正負數也能正常判斷,與2中的方法類似可以借助sed過濾掉+和-號即可。
echo"$var
" |sed
's/\.//g
' | sed
's/-//g
' | grep [^0-9] >/dev/null && echo
"$var is not number
" || echo
"$var is number
"
4、簡化**,數還可能是百分數比如15%,還有可能是指數,可以讓sed一次性全部過濾。將上面的**修改為:
echo"$var
" |sed
's/\.\|-\|+\|%\|\^//g
' | grep [^0-9] >/dev/null && echo
"$var is not number
" || echo
"$var is number
"
說明:在sed中可以使用或(|)運算子來表示過濾多個字元。以後可以隨時把表示數的符號加入到裡面,這樣就算實現判斷變數是字串數,還是其它的字元。
shell判斷乙個變數是否為空
1.最直接簡單的判斷 a echo a is null 不用那些if語句了,直接縮短 量。2.變數通過 引號引起來 如下所示 可以得到結果為 is null.bin sh a if n a then echo is null else echo not null fi3.直接通過變數判斷 如下所示 ...
shell中if判斷乙個變數為空
1.最直接簡單的判斷 a echo a is null 不用那些if語句了,直接縮短 量。2.變數通過 引號引起來 如下所示 可以得到結果為 is null.bin sh a if n a then echo is null else echo not null fi3.直接通過變數判斷 如下所示 ...
判斷乙個數字是否是回文
最近碰到乙個題目,其中一步判斷數字是否為回文 由於題目要求是最短時間實現,不要考慮實現本身的效率 1如果直接去實現,就是比較數字的最高位值和最低位,然後再。public boolean isp int x if x temp bit bit為數值位數 int temp1,temp2 for int ...