在交互式函数参数中关闭 ZSH glob 扩展 shell

turn off ZSH glob expansion in function arguments in interactive shell

当我遇到算术难题时¹,我喜欢简单地计算 shell

> echo $(( 3**4 - 2/7*5 ))

当然效果很好。但是,我发现打字太多了,所以我定义了

function §()
    echo $(( $@ ))

这让我可以

> § '3**4 - 2/7*5'

但不是

> § 3**4 - 2/7*5

因为 zsh 告诉我它找不到匹配项(或者更糟的是,如果有匹配项则扩展文件名)。

我如何告诉 zsh shell 我希望它 将作为函数参数输入的内容解释为 glob?

我不想做类似

的事情
> enter_non_glob_mode
> 3**4 - 2/7*5
> back_to_normal_mode

因为除此之外,我还可以开始 dcpython


¹欧拉妈妈对我说话,用智慧的话语、力量……SCNR。

使用 noglob 修饰符。

% noglob § 3**4 - 2/7*5
81

为避免每次都输入 noglob,请使用别名插入修饰符。 (您不能将 noglob 放在函数内部,因为在计算函数体之前已经进行了路径名扩展。)

% alias §='noglob §'
% § 3**4 - 2/7*5
81