Bash 更新嵌套变量中的值
我想通过连接多个变量的值,从多个变量中创建一个变量。之后,我想更新这些嵌套子变量中的值,并查看父变量中的更改。大概是这样的:Bash 更新嵌套变量中的值,bash,variables,Bash,Variables,我想通过连接多个变量的值,从多个变量中创建一个变量。之后,我想更新这些嵌套子变量中的值,并查看父变量中的更改。大概是这样的: #!/bin/bash a=123 b=abc c=$a$b echo $c # outputs 123abc a=456 echo $c # outputs 123abc although I want 456abc 我想将其输出为123abc和456abc,但我得到的是123abc和123abc。有可能在bash中实现我想要的行为吗?我想这就是您想要的。但是要
#!/bin/bash
a=123
b=abc
c=$a$b
echo $c # outputs 123abc
a=456
echo $c # outputs 123abc although I want 456abc
我想将其输出为
123abc
和456abc
,但我得到的是123abc
和123abc
。有可能在bash中实现我想要的行为吗?我想这就是您想要的。但是要小心,因为如果您不信任输入,使用eval可能会很危险
#!/bin/bash
a=123
b=abc
c="\${a}\${b}"
eval "echo $c"
a=456
eval "echo $c"
希望有帮助 我想这就是你要找的。但是要小心,因为如果您不信任输入,使用eval可能会很危险
#!/bin/bash
a=123
b=abc
c="\${a}\${b}"
eval "echo $c"
a=456
eval "echo $c"
希望有帮助 在BASH(4+)中,您可以使用declare-n
创建变量引用,因此如果您有:
a=123
并创建变量引用,如下所示:
declare -n c=a
然后,echo$c
将打印123
如果现在更改为a=789
,那么如果再次执行echo$c
,您将获得789
的更新值
但是,此参考
只能为单个变量(或数组)创建,也不能为多个变量的组合创建
作为一个简单的工作,考虑使用shell函数作为您的用例:
c() { echo "$a$b"; }
然后,$(c)
将始终是动态的,并且总是通过在BASH(4+)中连接值a
和b
来获取更新值,您可以使用声明-n
创建变量引用,因此如果您有:
a=123
并创建变量引用,如下所示:
declare -n c=a
然后,echo$c
将打印123
如果现在更改为a=789
,那么如果再次执行echo$c
,您将获得789
的更新值
但是,此参考
只能为单个变量(或数组)创建,也不能为多个变量的组合创建
作为一个简单的工作,考虑使用shell函数作为您的用例:
c() { echo "$a$b"; }
然后,
$(c)
将始终是动态的,并且总是通过将值a
和b
连接起来来获得更新值。通过执行c=$a$b
,您不会将a
和b
的引用分配给c
,但是您正在分配它们的值。我建议对嵌套变量(如c(){echo“$a$b”;}
)使用函数而不是变量,并将其用作脚本中的$(c)
,您将一直获得更新的值。通过执行c=$a$b
,您没有将a
和b
的引用分配给c
,而是分配它们的值。我建议对嵌套变量(如c(){echo“$a$b”;}
使用函数而不是变量,并将其用作$(c)
在您的脚本中,您将一直获得更新的值。不建议eval
吗?是的。它是。正如我指出的那样。但这是实现OP所希望的最好的方法在XY问题上,解决Y的最好方法不一定是解决X的好方法。不是被劝阻了吗?是的。它是。正如我指出的那样。但这是实现OP所想的最好方法在XY问题中,解Y的最好方法不一定就是解X的好方法。