example_script.sh: line 799: [[: 2.12: syntax error: invalid arithmetic operator (error token is ".12")
...
LOAD1_UP=8
LOAD5_UP=7
LOAD15_UP=7
read load1 load5 load15 <<< $(echo $(uptime | tr -d " " | awk -F "[:,]" '{print $8" "$9" "$10}'))
if [[ $load1 -gt $LOAD1_UP ]] || [[ $load5 -gt $LOAD5_UP ]] || [[ $load15 -gt $LOAD15_UP ]]; then
echo "LOAD is too high"
fi
shell内置的计算(())
和expr
不支持乘除,所以通过bc
进行计算(扩大10的N次方)然后进比较。以下假设进行小数点之后2位精度进行对比(使用${A%%.*}
截掉扩大100倍后小数点之后内容)
A=`echo $A*100 | bc`
A=${A%%.*}
B=`echo $B*100 | bc`
B=${B%%.*}
if (($A >= $B)); then
echo "A >= B"
else
echo "B > A"
fi
awk -v num1=6.6 -v num2=5.5 'BEGIN{print(num1>num2)?"0":"1"}'
a=6.6 b=5.5;expr $a \> $b
echo "6.6>5.5" |br
1
echo "5.5>6.6" | br
0
LOAD1_UP=8
LOAD5_UP=7
LOAD15_UP=7
read load1 load5 load15 <<< $(echo $(uptime | tr -d " " | awk -F "[:,]" '{print $8" "$9" "$10}'))
compare_load1=$(expr $load1 \> $LOAD1_UP)
compare_load5=$(expr $load5 \> $LOAD5_UP)
compare_load15=$(expr $load15 \> $LOAD15_UP)
# expr比较小数满足输出1
if [[ $compare_load1 -eq 0 ]] && [[ $compare_load5 -eq 0 ]] && [[ $compare_load15 -eq 0 ]]; then
echo "LOAD is OK"
else
echo "LOAD is too high"
fi