请教变量的间接引用

sh/bash/dash/ksh/zsh等Shell脚本
回复
Dic4000
帖子: 104
注册时间: 2008-09-10 21:06

请教变量的间接引用

#1

帖子 Dic4000 » 2009-01-13 0:22

在终端下执行:

代码: 全选

a=b;b=5;eval echo a=$a,b=\$$a;
echo \$$b
结果是:a=b,b=5
$b

但如果接着在终端下执行

代码: 全选

 echo  b=`echo \$$a`
会得到一个奇怪的结果,请问间接引用和(~号的那个键)的用法哪里有误,为什么?
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 请教变量的间接引用

#2

帖子 cnkilior » 2009-01-13 8:28

eval echo \$$b

试试
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: 请教变量的间接引用

#3

帖子 c\nc » 2009-01-13 11:42

a=aa
aa=AA
echo ${!a} # AA
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 请教变量的间接引用

#4

帖子 bones7456 » 2009-01-13 14:14

echo b=`echo \\$$a`
关注我的blog: ε==3
Dic4000
帖子: 104
注册时间: 2008-09-10 21:06

Re: 请教变量的间接引用

#5

帖子 Dic4000 » 2009-01-13 23:25

bones7456 写了:echo b=`echo \\$$a`
输出的是b=$b
cnkilior 写了:eval echo \$$b
其实我想知道有没有可能用echo `.....`形式来达到eval echo \$$b这样的效果?
我觉的命令 eval ...、` ... ` 和$(...)作用似乎是一样的,都是把后面的字符串当做一个命令先来执行。有没有高手帮忙讲讲eval和`...` 的区别? :em20
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: 请教变量的间接引用

#6

帖子 c\nc » 2009-01-14 0:06

如果是bash,用 ${!a} 多好。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请教变量的间接引用

#7

帖子 aerofox » 2009-01-15 6:22

c\nc 写了:如果是bash,用 ${!a} 多好。
确实很好很强大
回复