根据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