Ви можете знайти визначення -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твердження в коді відповідають на ваше запитання.