我有一个Seconds_Behind_Master
从我的脚本之一命名的变量。问题在于此变量可以具有数字值,也可以采用字符串NULL
作为其值。现在,当我尝试在shell中执行此脚本时,它会被执行,但会给出如下警告:
[: Illegal number: NULL
我认为这是由于在这种情况下该值为,NULL
但是当将其与数字值进行比较时60
会发出此警告。我该如何纠正?
在这种情况下,您应该使用算术评估- :(( expression ))
if (( $Seconds_Behind_Master >= 60 )); then
echo "replication delayed > 60."
elif [ "$Seconds_Behind_Master" = "NULL" ]; then
echo "Delay is Null."
fi
如果要遵守标准POSIX,则可以使用:
if echo $Seconds_Behind_Master | egrep -q '^[0-9]+$' && [ "$Seconds_Behind_Master" -ge "60" ] ; then
echo "replication delayed >= 60."
elif [ "$Seconds_Behind_Master" = "NULL" ]; then
echo "Delay is Null."
fi
有关以下内容的更多信息:Shell-测试数字变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句