Команда unix expr показывает странные результаты, сравнивая целые числа

2

Когда я пишу

expr 123 \< 5  

результат правильный (0), потому что expr вычисляет два целых числа.
Также

expr 123. \< 5  

дает ожидаемый результат (1), потому что теперь он сравнивает две строки.
Но

expr "123" \< 5  

дает 0 (я ожидал 1, как и раньше)
Почему?

user2431763
источник

Ответы:

1
expr 123 \< 5

а также

expr "123" \< 5

дать тот же ответ, потому что то, что exprкоманда видит в своих аргументах программы, в обоих случаях одинаково. Аргументы 1, 2, и 3 123, <и 5в обоих случаях.

Используйте /bin/echoвместо того, exprчтобы увидеть это более четко.

Экранирование и цитирование обрабатываются вашей оболочкой . То, что команды видят после запуска, это то, что ваша командная строка заканчивается, как после того, как оболочка обработала все перенаправления, расширения и подстановки и удалила все кавычки.

JdeBP
источник