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

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
narutozhang
帖子: 65
注册时间: 2007-01-08 22:18
来自: 中国
联系:

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

#1

帖子 narutozhang » 2009-03-09 12:51

如题,有点绕,其实就是:
有一个变量A,A中存储的内容是另一个变量的名字,我想得到这“另一个变量”的值,怎么通过A来得到?

欢迎大家发言~ :em03
踏踏实实做事,老老实实做人,开开心心生活~
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

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

#2

帖子 billbear » 2009-03-09 15:20

代码: 全选

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:~$ 
头像
narutozhang
帖子: 65
注册时间: 2007-01-08 22:18
来自: 中国
联系:

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

#3

帖子 narutozhang » 2009-03-09 15:49

Thank you very much :em11
踏踏实实做事,老老实实做人,开开心心生活~
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

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

#4

帖子 cnkilior » 2009-03-09 21:18

代码: 全选

a=b
b=c
echo ${!a}
c
头像
narutozhang
帖子: 65
注册时间: 2007-01-08 22:18
来自: 中国
联系:

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

#5

帖子 narutozhang » 2009-03-09 23:36

cnkilior 写了:

代码: 全选

a=b
b=c
echo ${!a}
c
可不可以介绍一下'!'的功能?谢谢.
踏踏实实做事,老老实实做人,开开心心生活~
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#6

帖子 eexpress » 2009-03-10 9:10

这bt的,没用过。估计lz是需要数组来操作什么,却思路不对。
● 鸣学
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

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

#7

帖子 billbear » 2009-03-10 10:59

可以在 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 会出错。
头像
narutozhang
帖子: 65
注册时间: 2007-01-08 22:18
来自: 中国
联系:

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

#8

帖子 narutozhang » 2009-03-10 12:47

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.
我就是跟上面说的一样要操作参数。
踏踏实实做事,老老实实做人,开开心心生活~
回复