在shell中间接扩展变量

wef*_*fa3 10 shell bash environment-variables arguments variable

我需要在bashshell 中间接引用一个变量。

我基本上想make通过写作来做你可以做的事情$($(var))。

我曾尝试使用${$var}哪个是最直接的解决方案,bash但随后出现此错误:

bash: ${$var}: bad substitution
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

我想要做的是使用迭代变量将所有参数 ( $1, $2, $3, ...) 迭代到程序中,如果没有间接,我无法做到这一点。

Tom*_*unt 14

如果你有var1=foo和foo=bar,你可以bar通过说得到${!var1}。但是,如果您想迭代位置参数,几乎肯定会更好

for i in "$@"; do
    # something
done
Run Code Online (Sandbox Code Playgroud)


Nic*_*aly 7

使用/bin/bash:

foo=bar
test=foo
echo ${!test}

# prints -> bar
Run Code Online (Sandbox Code Playgroud)