2013-06-27 55 views
3

KSH中我可以傳遞變量爲一個字符串操作模式:的zsh:在變量替換禁用水珠

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

能不能給我結果「S」,但在zsh中的*似乎extanded並沒有避免這種方式:

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

這兩個仍然會給我'害羞'。那麼如何將*模式傳遞給字符串運算符?

+0

感謝您提出一個有趣的問題,也許這個電子郵件列表可以設置您正確的路徑:http://www.zsh.org/mla/users/2004/msg00384.html(我搜索了zsh字符串插值)。哦,這個概念是常見問題解答:http://zsh.sourceforge.net/FAQ/zshfaq03.html – olleolleolle

回答

3

我有解決方案,在模式中應用'〜'。

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

man zshexpn報價:

$ {〜}規範
接通GLOB_SUBST選項規範的評價;如果~加倍,請關閉它。當這個選項被設置時, 由擴展產生的字符串將被解釋爲任何可能的模式,例如文件名擴展 和文件名生成以及模式匹配上下文,如=!=運算符的右側條件。