Ви можете знайти визначення -lt
та -gt
в документації test
команди ( man test
) або в документації bash, оскільки test
це вбудована команда в bash (як і в більшості інших оболонок).
-lt
і -gt
є числовими порівняннями (менші, ніж [і не рівні], більші, ніж [і не рівні]). Є також менші / більші або рівні оператори -le
і -ge
, і рівні і не рівні оператори -eq
і -ne
. Це числові оператори, тому помилка буде, якщо будь-яка сторона не є числом і 9
вважається меншою ніж 10
.
Причина, як імена -lt
використовуються, а не звичайна, <
полягає в тому, що персонаж <
інтерпретується як перенаправлення. Оператори =
і !=
також існують, але вони виконують порівняння рядків: test 00 -eq 0
істинно тоді test 00 = 0
помилково.
Деякі оболонки, включаючи bash, також мають операторів, <
і >
вони виконують рядкове лексикографічне порівняння, тому test 9 \< 10
помилковим, оскільки 9
сортується раніше 1
(зворотна косої риски запобігає <
інтерпретації символу як оператора перенаправлення). Ці оболонки також пропонують синтаксис з подвійною дужкою для тестів, наприклад [[ 9 < 10 ]]
(на відміну від [ 9 \< 10 ]
), який не може мати перенаправлення всередині, тому <
не потрібно цитувати.
echo
твердження в коді відповідають на ваше запитання.