У меня есть переменная с именем Seconds_Behind_Master из одного из моих скриптов. Проблема состоит в том, что эта переменная может иметь либо числовое значение, либо также может принимать строку NULL в качестве ее значения. Теперь, когда я пытаюсь выполнить этот скрипт в оболочке, он запускается, но выдает такое предупреждение:
[: Illegal number: NULL
Я считаю, что это связано с тем, что в этом случае значение равно NULL, но когда он сравнивает его с цифровым значением 60, он дает это предупреждение. Как это исправить?
Проверьте, является ли var NULL первым, а затем проверьте, является ли это >= 60. Рассмотрим этот код:
if [ "$Seconds_Behind_Master" = "NULL" ]; then
echo "Delay is Null."
elif [ "$Seconds_Behind_Master" -ge 60 ] 2>/dev/null; then
echo "replication delayed >= 60."
else
echo "Seconds_Behind_Master is neither NULL or >= 60"
fi
Вы также можете заменить строку
elif [ "$Seconds_Behind_Master" -ge 60 ] 2>/dev/null; then
на
elif [[ "$Seconds_Behind_Master" -ge 60 ]]; then
, если вы предпочитаете это и используете оболочку который поддерживает синтаксис [[.