原问题来自:http://ask.oldboyedu.com/?q-24.html
如何使用变量作为数组名?
比如i=1,array1=(a b c);我如何才能得到 ${array$i[@]}的结果,求详解,在线等,各位大大问题
补充 : 2小时前
[23 root@lvs01 ~]# a=1 [24 root@lvs01 ~]# array1=(a b c) [25 root@lvs01 ~]# echo ${array$a[@]} -bash: ${array$a[@]}: bad substitution
解答:
案例1:
[oldboy@oldboy ~]$ a=oldboy [oldboy@oldboy ~]$ oldboy1=test [oldboy@oldboy ~]$ echo "$`echo $a`1" $oldboy1 [oldboy@oldboy ~]$ eval echo "$`echo $a`1" test
本题正式解答:
[oldboy@oldboy ~]$ a=1 [oldboy@oldboy ~]$ array1=(a b c) [oldboy@oldboy ~]$ echo ${array$a[@]} -bash: ${array$a[@]}: bad substitution [oldboy@oldboy ~]$ echo $\{array$a[@]} ${array1[@]} [oldboy@oldboy ~]$ eval echo $\{array$a[@]} a b c
看过这两个案例的人就了解了eval的作用了,这个知识点在老男孩教育运维班课程提过,可能属于比较偏的知识吧,不过有时起大作用这个命令。
另一个提到eval命令的博文!
linux下set和eval的使用小案例精彩解答(特殊位置变量用法)
http://oldboy.blog.51cto.com/2561410/1175971