>echo 10^4|bc -l zsh: no matches found:"> >echo 10^4|bc -l zsh: no matches found:"> >echo 10^4|bc -l zsh: no matches found:" />

Как правильно привести цитированные аргументы?

У меня есть функция

calc() {echo "${1}"|bc -l;}

он работает на 2 + 2, но когда я хочу что-то подобное 10 ^ 4

calc 10^4
zsh: no matches found: 10^4

да, я получаю то же самое с bc -l

>>echo 10^4|bc -l
zsh: no matches found: 10^4

но для его решения я добавил цитаты

>>echo "10^4"|bc -l
10000

как реализовать его в функции? если я делаю "\" $ {1} \ "" , он просто будет эхо-строку ...

1
nl ja de

1 ответы

^ is a special character when EXTENDED_GLOB option is enabled in zsh. It's expanded before your function is called, so there's no workaround possible inside the function.

Вы можете полностью отключить EXTENDED_GLOB :

setopt no_extended_glob

или предоставить псевдоним для интерактивного использования, который будет расширяться в noglob calc , предотвращая расширение имени файла:

alias calc='noglob calc'
3
добавлено