首页 > 系统相关 >shell 变量里的变量

shell 变量里的变量

时间:2024-09-28 22:51:30浏览次数:7  
标签:shell 变量 echo so user eval name

前言全局说明

变量里的变量。


一、说明

环境:

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)



标签:shell,变量,echo,so,user,eval,name
From: https://www.cnblogs.com/wutou/p/18438581

相关文章

  • 使用数据基础描述进行连续变量的特征提取
    在数据科学与机器学习的过程中,数据的描述性统计和时间特征工程是十分重要的环节。描述性统计有助于快速理解数据的分布情况,而时间特征则能从时间数据中提取出有意义的信息,如趋势和周期性,帮助模型提升预测能力。本教程将围绕如何利用描述性统计量和时间数据来创建特征,旨在帮......
  • void * 类型指针变量如何赋值
      struct_MyDataType{/*Userdataheader*/UserDataTypeType;OpcUa_UInt16Number;//当前变量在该类型变量的序号/*Protocolinformation*/void*pValue;};typedefstruct_MyDataTypeMyDataType;pRes->Results[i].Value.Value.Doubl......
  • golang shell
    packageshellimport( "context" "fmt" "os/exec" "time")//自定义输出结构体typecustomOutputstruct{ outPutchanstring resetCtxchanstruct{}}//Write将输出写入到customOutput结构体中,并通知重置超时。func(ccustomOutput......
  • Linux线程-POSIX信号量与锁以及条件变量
    POSIX信号量POSIX没有元素这个概念相比于SYSTEM-V更简洁,POSIX不一定适用老版本;二者都是系统范畴,都需要手动删除,POSIX相关函数属于线程库,所有编译时需要末尾加上-lpthread选项POSIXPOSIX有名信号量主要用于进程间通信创建成功后,器特殊文件存放路径:/dev/shm/POSIX无名......
  • rust运行shell命令并获取输出
    usestd::io::{BufReader,BufRead};usestd::process::{self,Command,Stdio};fnmain(){ls();ps();xargs();time();iostat();}//不带参数命令fnls(){letoutput=Command::new("ls").output().expect("执行异常,提示");......
  • rust打印变量类型
    可以试试std::any::type_name。注意,这个是unstable的。usestd::collections::HashSet;fnprint_type_of<T>(_:&T){println!("{}",std::any::type_name::<T>())}fnmain(){letmuts=HashSet::new();letve=vec![1,2,1,3,2,......
  • Linux:环境变量
    一、环境变量1.1PATH的引入问题1:为什么我们平时输入的指令可以直接运行,但是自己编译出来的程序却要加./?——>因为指令所需要的相关程序是存储在系统能够查找得到的底下,而我们自己编译出来的程序是在当前的工作目录的,系统并不能直接找到。问题2:凭什么系统可以找到指令的......
  • PowerShell 脚本禁用 Realtek Audio Console 中的前面板插孔检测,通常需要修改注册表项
     PowerShell脚本禁用RealtekAudioConsole中的前面板插孔检测,通常需要修改注册表项。以下是一个示例脚本,用于执行此操作:powershellCopyCode#设置注册表路径$registryPath="HKLM:\SOFTWARE\Realtek\Audio\RtkNGUI\Settings"#检查注册表路径是否存在if(-not(Test-......
  • 动手动脑——同名变量的屏蔽原则
    在Java中,变量的“同名变量的屏蔽原则”通常指的是变量作用域的问题。当在不同的作用域中定义了同名的变量时,内部作用域的变量会“屏蔽”外部作用域的变量。这意味着在内部作用域中访问该变量名时,将会访问到内部作用域中定义的变量,而不是外部作用域中的变量。下面是一个简单的示例......
  • Javascript 一题搞懂 var 变量提升 & 函数声明提升!
    前置知识:在JavaScript中,“变量提升”(Hoisting)是指在代码执行之前,变量和函数声明会被提升到其所在作用域的顶部。对于使用var关键字声明的变量,会发生变量提升现象。一、声明提升1.变量声明提升:无论var变量在代码中的何处声明,它都会被提升到其所在的函数作用域......