当有多个以相同模式开头的变量时,是否可以使用通配符来输出所有匹配的模式?
例如zzz1=test1; zzz_A=test2; zzza=test3
最佳方法是什么来匹配所有以zzz开头的变量,类似于echo $zzz*
或for i in $zzz*; do echo $i; done
将输出:
test1
test2
test3
当有多个以相同模式开头的变量时,是否可以使用通配符来输出所有匹配的模式?
例如zzz1=test1; zzz_A=test2; zzza=test3
最佳方法是什么来匹配所有以zzz开头的变量,类似于echo $zzz*
或for i in $zzz*; do echo $i; done
将输出:
test1
test2
test3
根据以上评论,直接回答问题... 不,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
bash
中,你可以使用${!zzz*}
来扩展所有以zzz
开头的变量名。在zsh
中应该有类似的东西,尽管我不记得是什么了。 - chepnertypeset -m 'zzz*'
完成。详细信息请参见:https://dev59.com/cLfna4cB1Zd3GeqPxK42#59009819。 - hchbawecho $zzz
然后按下 TAB 键,Zsh 就会显示所有以zzz
开头的变量。请确保设置了setopt auto_list
。 - user1934428