Mic*_*zek 9 zsh brace-expansion
在 zsh(和其他 shell)中,如果我包含一个像(例如)这样的参数:
{a,b,c}{d,e,f}
Run Code Online (Sandbox Code Playgroud)
大括号扩展把它变成:
ad ae af bd be bf cd ce cf
Run Code Online (Sandbox Code Playgroud)
对于我的目的,参数顺序很重要,我需要大括号从右到左而不是从左到右展开。也就是说,我希望扩展是:
ad bd cd ae be ce af bf cf
Run Code Online (Sandbox Code Playgroud)
有没有办法控制多组大括号展开的顺序?我正在寻找可以在任何情况下工作的东西,而不仅仅是这些参数。
您可以将参数扩展与大括号扩展相结合。
% foo=(d e f)
$ echo {a,b,c}${^foo}
ad bd cd ae be ce af bf cf
Run Code Online (Sandbox Code Playgroud)
如果您不想foo
单独定义(似乎很可能),您可以使用以下内容:
$ echo {a,b,c}${^:-d e f}
ad bd cd ae be ce af bf cf
Run Code Online (Sandbox Code Playgroud)
如果您rcexpandparam
设置了该选项,则^
在任一示例中都不需要启用此行为。
(注意:在测试时,我也shwordsplit
设置了选项。如果您没有设置,请尝试,例如echo {a,b,c}${^=:-d e f}
。故事的寓意:在 中几乎任何事情都是可能的zsh
,但您必须确保使用正确的选项和语法的组合。)
归档时间: |
|
查看次数: |
310 次 |
最近记录: |