zsh:在变量替换中禁用glob

时间:2013-06-27 08:30:31

标签: shell zsh

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

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

会给我结果的'',但是在zsh中,*似乎已被夸大并且无法避免这种情况:

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

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

1 个答案:

答案 0 :(得分:4)

我有解决方案,在模式中应用'〜'。

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

引自man zshexpn

  

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