我为这个非常可怕的标题道歉 - 以及质量差的帖子 - 但我基本上想要做的是:
for I in 1 2 3 4
echo $VAR$I # echo the contents of $VAR1, $VAR2, $VAR3, etc.
Run Code Online (Sandbox Code Playgroud)
显然上面的方法不起作用 - 它会(我认为)尝试$VAR$I在Bash中回显一个名为Is this 的变量吗?
Ign*_*ams 35
是的,但不要这样做.请改用数组.
如果你仍坚持这样做......
$ foo1=123
$ bar=foo1
$ echo "${!bar}"
123
Run Code Online (Sandbox Code Playgroud)
Dum*_*001 10
for I in 1 2 3 4 5; do
TMP="VAR$I"
echo ${!TMP}
done
Run Code Online (Sandbox Code Playgroud)
我有一个一般规则,如果我需要间接访问变量(同上数组),那么是时候将脚本从shell转换为Perl/Python/etc.尽管可能在shell中进行高级编码很快变得一团糟.
您应该考虑将bash数组用于此类工作:
pax> set arr=(9 8 7 6)
pax> set idx=2
pax> echo ${arr[!idx]}
7
Run Code Online (Sandbox Code Playgroud)