比较bash中if语句中的整数值

时间:2014-03-02 07:43:51

标签: bash if-statement

当我运行名为C的{​​{1}}程序时,会在脚本中返回anom0

1

为行while : do xentop -b -d 1 -i 50 >> out cpu=$(tail -n 50 out| tr '\r' '\n' | col -bx | awk '{ total += $4 } END { print total/50 }') echo "$cpu" echo "$cpu_before" det=$(./anom $cpu $cpu_before) cpu_before=$cpu; echo "$det" if [ "$det" -eq "1" ];then echo "Detected" c=c+1 fi done 返回此error

if [ "$det" -eq "1" ];then

我试过这种方式:

 [: : integer expression expected

但我得到同样的错误。

2 个答案:

答案 0 :(得分:1)

最后一个命令的返回值存储在$?中。此外,诸如ifwhile之类的命令检查为真值(0)调用的命令的返回值,允许您直接使用它们。

if ! ./anom "$cpu" "$cpu_before" ; then
   ...
fi
cpu_before="$cpu"

答案 1 :(得分:0)

如果你在$ det中得到正确的值,

你为什么不试试

if [[ $det -eq 1 ]] 
then
   echo "Detected"
   c=$(($c + 1))
fi

我在你的代码中看到的一件事是你在比较之前将值转换为字符串..对于字符串我们使用=运算符进行比较。