根據man zshexpn
(5.0.2):正確使用〜參數擴展標誌?
〜強制字符串參數以任何低於後面的括號內的標誌被視爲 模式。
例如,使用s
標誌進行現場分裂需要一個字符串參數:
% print -l ${(s:9:):-"foo893bar923baz"}
foo8
3bar
23baz
我的~
標誌的閱讀建議,我應該能夠代替文字的指定模式字符串分割,所以,下面的
% print -l ${(~s:<->:):-"foo893bar923baz"}
應該產生
foo
bar
baz
相反,它的行爲相同,如果我省略了~
,根本不執行分割。
% print -l ${(s:<->:):-"foo893bar923baz"}
foo893bar923baz
% print -l ${(~s:<->:):-"foo893bar923baz"}
foo893bar923baz
我明白了's'標誌做了什麼;我在問''這個答案沒有解決的標誌。請重新閱讀這個問題。 '〜'和's'標誌一起出現在圓括號內*它不是在參數名稱前面出現的「〜」運算符(任何標誌之後)。 – chepner 2014-09-02 20:59:07
更新回答,以包含'〜'標誌所做的事情。 – zerodiff 2014-09-02 21:45:53
在文檔中這可能是錯誤的措辭,但我很確定'$ {(s.foo。)bar}中的參數是'foo',而不是'bar'。 – chepner 2014-09-03 13:10:26