shell变量名中包含变量

it2026-08-09  2

eval 接受一个字符串作为它的参数,并对它进行评估、转义。

 

n=1 eval echo \${$n}

运行传递给eval的参数。扩展后,参数是 echo和  ${1}。所以eval echo \${$n}运行命令echo ${1}。

 

string=id id=1 stream_1="111111" cmd=" {$(eval echo \${stream_${id}}), 222222} " echo $cmd # 有些bash不支持下面写法 echo ============ echo "${!string}"

运行结果

{111111, 222222} ============ 1

 

========================赋值=====================================

 例如有变量 s1, s2, s3, … , 用变量 i 表示数字, 怎样方便的用for循环赋值, 解决方法是用 eval 命令. 如下:

i=1 var=1 eval s_${i}=${var} echo $s_1 =====打印===== 1  

给其他变量赋值

eval ss=\$s${i}  

打印用

eval echo \$s${i}
最新回复(0)