>
- оператор перенаправления.Вы хотите -gt
if [ $cpu_usage -gt $expected_cpuusage ]
Для этого необходимо, чтобы $ cpu_usage выглядел как целое число, и потерпит неудачу и выдаст ошибку, если это не так.(т. е. если он содержит символы, отличные от 0-9. -gt не сравнивает значения с плавающей запятой, поэтому строки, содержащие '.', не будут работать.) Для сравнений с плавающей запятой используйте expr:
if expr $cpu_usage \> $expected_cpuusage > /dev/null; then
Есть более удобные способы сделать это сравнение с использованием встроенных команд bash, таких как [[, но эти конструкции ограничивают переносимость скрипта.Другая ошибка, которую вы видите, возникает, когда вы используете пустую строку.Попробуйте использовать кавычки:
if [ "$message" -ne "" ]
, но гораздо понятнее:
if [ -n "$message" ]