如何设置包含将在 Bash 中更改的其他变量的变量?
How to set a variable which contains other variables that will change in Bash?
var1=0
var=$var1
(Some conditions that may change $var1)
var1=1
echo $var
我需要 1
作为 echo $var
的输出。换句话说,如果 variable 中包含的 variable1 发生变化,我需要获取一个新值。
是否有一些特殊的选项或报价可以让我这样做?
编辑:
FILE=ArchLinuxARM-$DATE-$TARGET.img
DATE=2015.10
TARGET=rpi-2
echo ${!FILE}
不会回显任何内容。 (它应该回显 ArchLinuxARM-2015.10-rpi-2.img
)
在bash版本4.3中,可以创建引用变量:
$ echo $BASH_VERSION
4.3.42(1)-release
$ declare -n var=var1
$ var1=0; echo $var
0
$ var1=1; echo $var
1
对于你的具体问题,你最好使用一个函数:
filename() { echo "ArchLinuxARM-$DATE-$TARGET.img"; }
DATE=2015.10
TARGET=rpi-2
echo "$(filename)"
var1=0
var=$var1
(Some conditions that may change $var1)
var1=1
echo $var
我需要 1
作为 echo $var
的输出。换句话说,如果 variable 中包含的 variable1 发生变化,我需要获取一个新值。
是否有一些特殊的选项或报价可以让我这样做?
编辑:
FILE=ArchLinuxARM-$DATE-$TARGET.img
DATE=2015.10
TARGET=rpi-2
echo ${!FILE}
不会回显任何内容。 (它应该回显 ArchLinuxARM-2015.10-rpi-2.img
)
在bash版本4.3中,可以创建引用变量:
$ echo $BASH_VERSION
4.3.42(1)-release
$ declare -n var=var1
$ var1=0; echo $var
0
$ var1=1; echo $var
1
对于你的具体问题,你最好使用一个函数:
filename() { echo "ArchLinuxARM-$DATE-$TARGET.img"; }
DATE=2015.10
TARGET=rpi-2
echo "$(filename)"