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}