最近我切换到了zsh
。在使用bash
时,我经常使用echo 2*3 |bc
作为一个强大而方便的计算器,但是在zsh
中,命令的前半部分会产生错误信息:
$ echo 2*3
zsh: no matches found: 2*3
我知道我可以通过在字符串2*3
中添加引号来避免扩展,但是是否可能从bash
中引入此功能(不扩展命令参数中的星号)?
更新:
与此同时,我发现bc <<< 2*3
不会触发扩展,很奇怪:-(
最近我切换到了zsh
。在使用bash
时,我经常使用echo 2*3 |bc
作为一个强大而方便的计算器,但是在zsh
中,命令的前半部分会产生错误信息:
$ echo 2*3
zsh: no matches found: 2*3
我知道我可以通过在字符串2*3
中添加引号来避免扩展,但是是否可能从bash
中引入此功能(不扩展命令参数中的星号)?
更新:
与此同时,我发现bc <<< 2*3
不会触发扩展,很奇怪:-(
noglob echo 2*3 | bc
然后在此基础上创建一个别名:
calc()
{
echo $* | bc
}
alias calc='noglob calc'
$(( ))
在 Zsh 中进行算术运算,你可以通过使用 calc() { echo $(( $* )) }
避免使用 bc
。 - Francisco
zsh
中,关于 here strings 的文档说明<<< word
中的word
不会经过 shell 扩展,这就解释了为什么你不需要引用*
。 - chepner