Shell腳本中對小數進行比較

直接上原shell

if [ $TBSUSE  -gt 80 ]
    then
        ...
    else
        ...
fi

此時如果$TBSUSE傳入的不是整數的話,那麼會提示錯誤:
./monitor_tbs.sh: line 62: [: 80.48: integer expression expected

看這錯誤的意思是 參數只能傳入整數,非整數的話不能使用 -gt來比較大小
(同理,-lt\-eq\-ne\-ge\-le 都是不行的)

處理辦法:

1.使用expr

if [ `expr $TBSUSE \> 80` -eq 1 ]
    then
        ...
    else
        ...
fi

需要注意的是,[ `是 `而不是'

2.使用br

if [ `echo "$TBSUSE > 80"|bc` -eq 1 ]
    then
        ...
    else
        ...
fi

3.使用awk進行判斷

echo 'imput var:'
read TBSUSE
if [ `awk -v var1=$TBSUSE -v var2=80 'BEGIN{print(var1>var2)?1:0}'` -eq 1 ]
    then
        ...
    else
        ...
fi 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章