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

Mar*_*ler 3 zsh glob

当我发现自己遇到算术问题时¹,我喜欢简单地在我的外壳上计算

> echo $(( 3**4 - 2/7*5 ))
Run Code Online (Sandbox Code Playgroud)

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

function §()
    echo $(( $@ ))
Run Code Online (Sandbox Code Playgroud)

这让我可以

> § '3**4 - 2/7*5'
Run Code Online (Sandbox Code Playgroud)

但不是

> § 3**4 - 2/7*5
Run Code Online (Sandbox Code Playgroud)

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

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

我不想做类似的事情

> enter_non_glob_mode
> 3**4 - 2/7*5
> back_to_normal_mode
Run Code Online (Sandbox Code Playgroud)

因为取而代之的是,我也开始dcpython...


¹欧拉妈妈对我说话,轻声细语,智慧之言,e... SCNR 的力量。

che*_*ner 5

使用noglob修饰符。

% noglob § 3**4 - 2/7*5
81
Run Code Online (Sandbox Code Playgroud)

为避免noglob每次都键入,请使用别名来插入修饰符。(您不能放入noglob函数内部,因为在评估主体之前已经发生了路径名扩展。)

% alias §='noglob §'
% § 3**4 - 2/7*5
81
Run Code Online (Sandbox Code Playgroud)