假设一个变量的值是另一个变量的名字.我们有可能从第一个变量中取得第 2 个变量的值么?
比如,如果 a=letter_of_alphabet 接着 letter_of_alphabet=z,那么我们能从 a 中得到 z 么?
答案是:当然可以,并且这被称为间接引用.它使用一个不常用的符号 eval var1=\$$var2.
#!/bin/bash
a=letter_of_alphabet
letter_of_alphabet=z
echo
echo "a = $a" #直接引用 letter_of_alphabet
eval a=\$$a
echo "Now a = $a" #间接引用 z
echo
经过测试,eval a=\$$a只能间接引用一次。
#!/bin/bash
a=letter_of_alphabet
letter_of_alphabet=$z
z=new
echo -----
echo "a = $a" #直接引用 letter_of_alphabet
eval a=\$$a
echo "Now a = $a" #间接引用,结果为空。
echo -----
3.执行eval 命令
1 #!/bin/bash
2 seed=` eval date `
3 R=$seed
4 echo "$seed"
5 echo "$R"
结果:
2016年 04月 23日 星期六 00:56:36 CST
2016年 04月 23日 星期六 00:56:36 CST