使用通配符扩展在zsh中回显所有变量

4

当有多个以相同模式开头的变量时,是否可以使用通配符来输出所有匹配的模式?

例如zzz1=test1; zzz_A=test2; zzza=test3

最佳方法是什么来匹配所有以zzz开头的变量,类似于echo $zzz*for i in $zzz*; do echo $i; done将输出:

test1
test2
test3

我知道在 bash 中,你可以使用 ${!zzz*} 来扩展所有以 zzz 开头的变量名。在 zsh 中应该有类似的东西,尽管我不记得是什么了。 - chepner
我已经发布了一个相关问题,尽管可能有另一种解决方案。 - chepner
2
可以使用 typeset -m 'zzz*' 完成。详细信息请参见:https://dev59.com/cLfna4cB1Zd3GeqPxK42#59009819。 - hchbaw
@Stuber:如果你只想在命令行上看到以某个字符串开头的变量名,你可以使用_variable completion_:比如你输入 echo $zzz 然后按下 TAB 键,Zsh 就会显示所有以 zzz 开头的变量。请确保设置了 setopt auto_list - user1934428
1个回答

2

根据以上评论,直接回答问题... 不,zsh不能使用通配符来扩展和输出变量,但是typeset可以提供所需的结果。

typeset -m 'zzz*' 输出:

zzz_A=test2
zzz1=test1
zzza=test3

更准确地说,我需要按照这里所解释的方式获取我想要的输出:

for i in `typeset +m 'zzz*'`; do echo "${i}:  ${(P)i}"; done

zzz1:  test1
zzz_A:  test2
zzza:  test3

或者只是...
for i in `typeset +m 'zzz*'`; do echo "${(P)i}"; done

test1
test2
test3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接