如何阻止zsh在命令行中扩展*(星号)?

5

最近我切换到了zsh。在使用bash时,我经常使用echo 2*3 |bc作为一个强大而方便的计算器,但是在zsh中,命令的前半部分会产生错误信息:

$ echo 2*3
zsh: no matches found: 2*3

我知道我可以通过在字符串2*3中添加引号来避免扩展,但是是否可能从bash中引入此功能(不扩展命令参数中的星号)?

更新:

与此同时,我发现bc <<< 2*3不会触发扩展,很奇怪:-(


1
zsh 中,关于 here strings 的文档说明 <<< word 中的 word 不会经过 shell 扩展,这就解释了为什么你不需要引用 * - chepner
1个回答

4
你可以做以下事情:
noglob echo 2*3 | bc

然后在此基础上创建一个别名:

calc()
{
   echo $* | bc
}
alias calc='noglob calc'

2
顺便提一下,你可以使用 $(( )) 在 Zsh 中进行算术运算,你可以通过使用 calc() { echo $(( $* )) } 避免使用 bc - Francisco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接