4

在 ksh 中,我可以将变量传递给字符串运算符模式:

m=h*; a=shy;  print ${a%%${m}}

会给我结果's',但在zsh中,*似乎被扩展了,没有办法避免这种情况:

m=h*; a=shy; print ${a%%${m}}
m=h*; a=shy; noglob print ${a%%${m}}

两者都会让我“害羞”。那么如何将 * 模式传递给字符串运算符?

4

1 回答 1

4

我有解决方案,在模式中应用“~”。

m=h*; a=shy;  print ${a%%$~m}

引自man zshexpn

${~spec}
打开 GLOB_SUBST spec评估的选项;如果~加倍,则将其关闭。=设置此选项后,扩展产生的字符串将在任何可能的地方解释为模式,例如在文件名扩展和文件名生成以及模式匹配上下文中,如条件中的and运算符的右侧!=

于 2013-06-28T02:43:27.700 回答