Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 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}}
两者都会让我“害羞”。那么如何将 * 模式传递给字符串运算符?
我有解决方案,在模式中应用“~”。
m=h*; a=shy; print ${a%%$~m}
引自man zshexpn:
man zshexpn
${~spec} 打开 GLOB_SUBST spec评估的选项;如果~加倍,则将其关闭。=设置此选项后,扩展产生的字符串将在任何可能的地方解释为模式,例如在文件名扩展和文件名生成以及模式匹配上下文中,如条件中的and运算符的右侧!=。
GLOB_SUBST
~
=
!=