Tengo un problema bastante extraño, estoy ejecutando un script (Bash) en varios servidores y dejó de funcionar en uno de los servidores (funciona perfectamente bien en todos los demás servidores).
Aquí está la parte problemática del script: (No lo escribí yo mismo, todos los créditos van a "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
Mensaje de error completo:
./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
Si necesita más información, avíseme y trataré de proporcionarla lo más rápido posible.
Agradezco todas las entradas :)
${result%%.*}sería la expansión correcta para eliminar el punto decimal aquí. Pero tenga en cuenta quecut -c -2también causará problemas con números de 100 o más, por lo que es más seguro soltarlo por completo.