分页: 1 / 1

请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-09 12:51
narutozhang
如题,有点绕,其实就是:
有一个变量A,A中存储的内容是另一个变量的名字,我想得到这“另一个变量”的值,怎么通过A来得到?

欢迎大家发言~ :em03

Re: 请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-09 15:20
billbear

代码: 全选

ubuntu@ubuntu:~$ a=b
ubuntu@ubuntu:~$ b='it works!'
ubuntu@ubuntu:~$ echo $a
b
ubuntu@ubuntu:~$ echo $b
it works!
ubuntu@ubuntu:~$ eval echo \$$a
it works!
ubuntu@ubuntu:~$ eval c=\$$a
ubuntu@ubuntu:~$ echo $c
it works!
ubuntu@ubuntu:~$ 

Re: 请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-09 15:49
narutozhang
Thank you very much :em11

Re: 请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-09 21:18
cnkilior

代码: 全选

a=b
b=c
echo ${!a}
c

Re: 请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-09 23:36
narutozhang
cnkilior 写了:

代码: 全选

a=b
b=c
echo ${!a}
c
可不可以介绍一下'!'的功能?谢谢.

Re: 请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-10 9:10
eexpress
这bt的,没用过。估计lz是需要数组来操作什么,却思路不对。

Re: 请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-10 10:59
billbear
可以在 http://ftp.ubuntu.org.cn/doc/ebooks/%e8 ... -guide.pdf 这本书里面搜 indirect variable reference (referencing)
4 楼的方法是 bash version 2 的新语法,在不同的 shell 里可能不能用。
在 bash 下,
echo $BASH_VERSION
如果是版本 2 或 3 就可以
如果在 ubuntu 里,记住用 #!/bin/bash ,而 #!/bin/sh 会出错。

Re: 请教:如何读取以变量值为名的变量的值

发表于 : 2009-03-10 12:47
narutozhang
eexpress 写了:这bt的,没用过。估计lz是需要数组来操作什么,却思路不对。
eval is useful when cmd contains something which needs to be evaluated by the shell. The typical case would be when you have a variable containing the index of an argument you want to access.
我就是跟上面说的一样要操作参数。