Answers:
用简单的方式:
j="jjj"
k="kkk"
l="lll"
for i in {j,k,l}; do echo "$i = ${!i}"; done
输出:
j = jjj
k = kkk
l = lll
${!i}
- bash的变量扩展/间接(获取变量名的所保存的值$i
){j,k,l}
短期使用{j..l}
):也
{j,k,l}
就够了
j k l
足够了。
或在zsh
使用中declare -p
% j=jjj; k=kkk; l=(l l l)
% for v in j k l; do declare -p $v; done
typeset j=jjj
typeset k=kkk
typeset -a l=( l l l )
%
虽然${!i}
是一种更清洁,更快速的解决方案,但为完整起见,还可以通过以下示例获取间接引用:
foo=bar
bar=baz
$ echo $foo
bar
$ eval echo \$${foo}
baz
因此:
j="jjj"
k="kkk"
l="lll"
for i in {j,k,l}; do
echo "$i = `eval echo \\$${i}`"
done
给出:
j = jjj
k = kkk
l = lll
参考文献: