shell 变量的变量-动态变量

前言全局说明

变量里的变量。


一、说明

环境:

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)



posted @ 2024-09-28 22:57  悟透  阅读(33)  评论(0)    收藏  举报