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