>_ IzzyLab

Практическое задание

Сравни числа как числа

средне

Скрипт /root/cmp.sh сравнивает числа 9 и 10 строковым оператором и ошибочно решает, что 9 больше 10. Почини сравнение на числовое, чтобы скрипт печатал smaller и shellcheck был чист.

Что потренируешь:
  • shellcheck
  • числовое сравнение
  • SC2071
  • (( ))
  • -gt

Разбор темы

В bash есть два разных мира сравнения. Строковые операторы (=, !=, <, > внутри [[ ]]) сравнивают по порядку символов, поэтому «9» > «10». Числовые сравнения делают арифметический контекст (( a > b )) или операторы test: -eq -ne -gt -lt -ge -le. Путаница даёт тихо неверный результат на многозначных числах; shellcheck предупреждает правилом SC2071, когда видит >/< там, где по смыслу нужны числа.

Что проверяется

  1. shellcheck без замечаний
  2. 9 меньше 10

Как это выглядит