Вы должны использовать двойные круглые скобки (( ))
для выполнения арифметических выражений, и, поскольку Bash не может обрабатывать десятичные значения, вам просто нужно удалить точку (как будто вы хотите умножить ее на десять).
temp=$(sysctl -n hw.acpi.thermal.tz0.temperature | tr -d 'C')
max_temp=50.2
(( ${temp//./} > ${max_temp//./} )) && echo "temp hot" || echo "temp ok"
Обязательно используйте один и тот же формат для обоих значений (особенно начальные нули, 54.10
станет 5410
).
Если формат не может быть гарантирован, есть второй метод, как упомянуто Бенджамином W, с использованием bc
. Вы можете послать этой команде логическую операцию с плавающей запятой, она возвращает 0, если истина, 1 в противном случае.
temp=$(sysctl -n hw.acpi.thermal.tz0.temperature | tr -d 'C')
max_temp=50.2
(( $(echo "$temp > $max_temp" | bc) )) && echo "temp hot" || echo "temp ok"