2

Утилита expr вычисляет выражение и записывает результат в стандартный вывод.

Какой канонический способ ZSH оценить выражение и распечатать результат?

Решение:

Я считаю, что ответом является использование eval:

Например:

% eval 'export FOO=baz'
% echo $FOO
baz

Я также нашел аналогичный вопрос суперпользователя "zsh запустить команду, хранящуюся в переменной?"

1 ответ1

5

Поскольку expr - это просто отдельная команда, она может использоваться с zsh как и любая другая команда, хотя многие операторы, возможно, должны быть экранированы или заключены в кавычки:

% expr 7 * 2
expr: syntax error
% expr 7 '*' 2
14
% expr 8 < 9
zsh: no such file or directory: 
% expr 8 \< 9
1

Если вы хотите использовать только встроенные команды zsh, нет единой альтернативы перехватывать все.

Большинство арифметических выражений могут быть обработаны с помощью echo $(( exp ))

% echo $(( 7 * 2 ))
14
% echo $(( 8 < 9 ))
1

Некоторые строковые операции можно заменить раскрытием параметров. (Обратите внимание, что expr считает позиции от 1, а zsh начинается с 0)

% str='hello world'
% expr substr $str 4 5
lo wo
% echo ${str:3:5}
lo wo
% expr length $str
11
% echo $#str
11

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