2

Когда я пишу

expr 123 \< 5  

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

expr 123. \< 5  

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

expr "123" \< 5  

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

1 ответ1

1
expr 123 \< 5

а также

expr "123" \< 5

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .