前言全局说明
变量里的变量。
一、说明
环境:
Ubuntu 18.04.6 LTS (Linux qt-vm 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux)
python Python 2.7.17 (default, Mar 8 2023, 18:40:28) [GCC 7.5.0] on linux2
python3 Python 3.6.9 (default, Mar 10 2023, 16:46:00) [GCC 8.4.0] on linux
二、变量里的变量
a=A
b=B
name_A=James
name_B=Smith
name=`eval echo '$'"name_$a"`
echo ${name}
name=`eval echo '$'"name_$b"`
echo ${name}
eval 是延时获取命令。就是检查本行语句中$开头的变量,都被解释后,才给出最后结果。
三、参数变量
3.1 接收 $1 参数
name_A=James
name_B=Smith
name=`eval echo '$'"name_$1"`
echo ${name}
测试:
#./filename.sh A
#./filename.sh B
3.2 数组
model_so=dummy.so
R_so_list=(
laaaR lsssR ldddR leeeR lrrrR
)
A_so_list=(
laaaA lsssA ldddA leeeA lrrrA
)
SO_LIST=`eval echo '$'{"$1"_so_list[@]}`
for i in ${SO_LIST[@]}; do
echo lib${i:1}.so
done
测试:
#./filename.sh A
#./filename.sh R
四、变量组合成的变量
在Shell脚本中,可以使用间接引用的方式来创建由另一个变量组成的变量名,然后对其进行赋值或引用。
这通常通过eval命令或者用${!varprefix@}语法实现。
4.1 下面是使用eval的例子:
variable_name="user1"
user_var="name"
eval ${user_var}=$variable_name
echo $name # 输出 user1
4.2 使用${!varprefix@}的例子:
user_var="name"
declare "$user_var"=$variable_name
echo ${!user_var} # 输出 user2
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://www.cnblogs.com/jamesblue/p/7779474.html
https://blog.csdn.net/dengyin7408/article/details/101268959
https://www.baidu.com/s?ie=UTF-8&wd=shell+变量组合成的变量&tn=98012088_21_dg&ch=1 (百度AI)