当我运行名为C
的{{1}}程序时,会在脚本中返回anom
或0
:
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
但我得到同样的错误。
答案 0 :(得分:1)
最后一个命令的返回值存储在$?
中。此外,诸如if
和while
之类的命令检查为真值(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
我在你的代码中看到的一件事是你在比较之前将值转换为字符串..对于字符串我们使用=运算符进行比较。