У меня довольно странная проблема, я запускаю скрипт (Bash) на нескольких серверах, и он перестал работать на одном из серверов (прекрасно работает на всех других серверах).
Вот проблемная часть сценария: (я сам не написал, все кредиты идут в «Rich») ( http://www.notrainers.org/monitoring-memory-usage-on-linux-with-nagios- and-nrpe / )
if [ "$result" -lt "$warn_level" ]; then #Line 56
echo "Memory OK. $result% used."
exit 0;
elif [ "$result" -ge "$warn_level" ] && [ "$result" -le "$critical_level" ]; then #Line 59
echo "Memory WARNING. $result% used."
exit 1;
elif [ "$result" -gt "$critical_level" ]; then #Line 62
echo "Memory CRITICAL. $result% used."
exit 2;
fi
Полное сообщение об ошибке:
./check_memory.sh: Line 56: [: 7.: integer expression expected
./check_memory.sh: Line 59: [: 7.: integer expression expected
./check_memory.sh: Line 62: [: 7.: integer expression expected
Если вам нужна дополнительная информация, дайте мне знать, и я постараюсь предоставить ее как можно быстрее.
Цените все материалы :)
${result%%.*}будет правильным расширением, чтобы удалить десятичную точку здесь. Но обратите внимание, что этоcut -c -2также вызовет проблемы с числами от 100 и более, поэтому безопаснее полностью его отбросить.