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


2

Когда я пишу

expr 123 \< 5  

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

expr 123. \< 5  

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

expr "123" \< 5  

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

Ответы:


1
expr 123 \< 5

а также

expr "123" \< 5

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.