首页 > 解决方案 > 在交互式 shell 中关闭函数参数中的 ZSH glob 扩展

问题描述

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

> 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……</p>


¹欧拉母亲对我说话,低语着智慧的话语,e的力量...... SCNR。

标签: zshglob

解决方案


使用noglob修饰符。

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

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

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

推荐阅读