在中,有一个参数扩展的方法来生成与给定前缀匹配的变量名。例如:
据我所知,
$ foo1=a foo2=b four=4
$ echo "${!foo@}"
foo1 foo2
在 zsh
中有相应的功能吗?我知道 (P)
参数扩展标志是类似于 bash
的间接扩展 ${!foo}
的等价物:
# bash
$ foo=bar bar=3
$ echo ${!foo}
3
# zsh
% foo=bar bar=3
% echo ${(P)foo}
3
据我所知,
(P)
不支持前缀匹配。% echo "${(P}foo@}"
zsh: bad substitution
似乎没有办法对参数的名称进行任何类型的通配符匹配,只能在参数扩展时进行。
(这似乎是解决“在zsh中使用通配符扩展来echo所有变量”的必要前提,尽管我可能对此有所误解。)
parameters
被定义过,但是不记得在哪里看到了。在man zshparams
中没有看到它,所以以为自己想象错了。 - chepner