在ksh中我可以将变量传递给字符串运算符模式:
m=h*; a=shy; print ${a%%${m}}
会给我结果的'',但是在zsh中,*似乎已被夸大并且无法避免这种情况:
m=h*; a=shy; print ${a%%${m}}
m=h*; a=shy; noglob print ${a%%${m}}
两者还会让我'害羞'。那么如何将*模式传递给字符串运算符?
答案 0 :(得分:4)
我有解决方案,在模式中应用'〜'。
m=h*; a=shy; print ${a%%$~m}
引自man zshexpn
:
<强> $ {〜规范} 强>
打开GLOB_SUBST
选项以评估规范;如果~
加倍,请将其关闭。设置此选项后, 扩展产生的字符串将被解释为任何可能的模式,例如在文件名扩展中 和文件名生成和模式匹配上下文,如条件中=
和!=
运算符的右侧。