【发布时间】:2017-01-10 19:59:33
【问题描述】:
假设你有类似的东西:
$ a=(fooa foob foox)
那么你可以这样做:
$ b=(${(M)a:#*(a|b)})
选择与模式匹配的元素。
所以你有:
$ print ${(qq)b}
'fooa' 'foob'
然后您希望以某种动态方式构建模式,因此您将它放在另一个变量中,例如:
$ p="*(a|b)"
而你期望这样:
$ b=(${(M)a:#$p})
如文档所述,可以像以前一样工作,但它不会:
$ print ${(qq)b}
''
这是为什么呢?
【问题讨论】:
标签: shell scripting zsh variable-expansion