直接上原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
本文探讨了在Shell脚本中处理非整数值的三种有效方法:使用expr、bc及awk进行数值比较,解决了当传入非整数时,直接使用-gt等操作符引发的错误,适用于各种复杂的数值判断场景。
1159

被折叠的 条评论
为什么被折叠?



