繁体   English   中英

更新嵌套变量中的值

[英]Updating values in nested variables

我想通过连接多个变量的值来创建一个变量。 之后,我想更新那些嵌套子变量中的值并查看父变量中的更改。 像这样的东西:

#!/bin/bash

a=123
b=abc

c=$a$b
echo $c # outputs 123abc

a=456
echo $c # outputs 123abc although I want 456abc

我希望它输出123abc456abc但我得到123abc123abc 是否有可能在 bash 中实现我想要的行为?

在 BASH (4+) 中,您可以使用declare -n创建变量引用,如果您有:

a=123

并创建一个变量引用

declare -n c=a

然后echo $c将打印123

如果您现在更改为a=789那么如果您再次执行echo $c ,您将获得789更新值。

但是,此reference只能为单个变量(或数组)创建,也不能为多个变量的组合创建。

作为一个简单的解决方法,请考虑为您的用例使用 shell 函数,如下所示:

c() { echo "$a$b"; }

然后$(c)将始终是动态的,并且总是通过连接值ab更新值。

我想这就是你要找的。 不过要小心,因为如果您不信任输入,则使用eval可能会很危险。

#!/bin/bash

a=123
b=abc

c="\${a}\${b}"
eval "echo $c"

a=456
eval "echo $c" 

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM