在ksh中,我可以将变量传递给字符串操作符模式:
m=h*; a=shy; print ${a%%${m}}
在bash中,运行这个命令会返回字符串's',但是在zsh中,*似乎被扩展了,无法避免:
m=h*; a=shy; print ${a%%${m}}
m=h*; a=shy; noglob print ${a%%${m}}
两个都仍然会给我“shy”。那么我该如何将*模式传递给字符串运算符?
在ksh中,我可以将变量传递给字符串操作符模式:
m=h*; a=shy; print ${a%%${m}}
在bash中,运行这个命令会返回字符串's',但是在zsh中,*似乎被扩展了,无法避免:
m=h*; a=shy; print ${a%%${m}}
m=h*; a=shy; noglob print ${a%%${m}}
两个都仍然会给我“shy”。那么我该如何将*模式传递给字符串运算符?
m=h*; a=shy; print ${a%%$~m}
man zshexpn
引用:
${~spec}GLOB_SUBST
选项以评估spec;如果~
被双倍,则关闭它。当设置此选项时,扩展后得到的字符串将被解释为任何可能的模式,例如在文件名扩展和文件名生成以及条件中的右侧等模式匹配上下文中。