如何使用 echo 输出作为变量

如何使用 echo 输出作为变量

bar我模拟了变量的值为的情况$foofoo也是一个变量,其值为hello

$ foo=hello
$ bar=$(echo "\$foo")
$ echo $bar
$foo

hello我该如何到达给定 foo="hello"bar="$foo"

我试过:

$ echo $(echo $bar)

但输出仍然是:

$foo

答案1

使用“nameref”

declare -n bar=foo

foo=hello
echo "$bar"    # => hello

foo=world
echo "$bar"    # => world

或者间接变量

unset bar
bar=foo

foo=hello
echo "${!bar}"    # => hello

foo=world
echo "${!bar}"    # => world

答案2

使用eval方式如下:

$ foo=hello
$ bar=$(echo "\$foo")
$ echo "$bar"
$foo
$ eval echo "$bar"
hello
$ foo=world
$ eval echo "$bar"
world

在上面的例子中,evalbash 内置命令将再次解析参数,以便$bar变量内容将再次被解释为变量($foo)及其当前内容hello在第一种情况下和world在第二种情况下)将用作echo命令的参数。

相关内容