Chinaunix

标题: 变量如何“动态变化”? [打印本页]

作者: vivian2086    时间: 2010-06-23 09:35
标题: 变量如何“动态变化”?
a="aaa"
b="$a bbb"
echo $b         # aaa bbb

a="111"
echo $b         # 这里我希望是 111 bbb
作者: waker    时间: 2010-06-23 09:48
a="aaa"
b='$a bbb'
echo $b         # aaa bbb

a="111"
eval echo $b
作者: hujysh    时间: 2010-06-23 09:51
本帖最后由 hujysh 于 2010-06-23 09:57 编辑

2楼的

eval echo $b 可以的,  直接echo的不可以的
作者: bbgg1983    时间: 2010-06-23 09:53
  1. 楼主这不叫动态变化,而叫“变量的间接引用”喔~
复制代码

作者: lkk2003rty    时间: 2010-06-23 09:57
回复 4# bbgg1983


    斑竹给出的只是用了引号  不算是引用吧
   你是指这样的?
  1. [oracle@s12071 ~]$ a=123
  2. [oracle@s12071 ~]$ b=a
  3. [oracle@s12071 ~]$ eval echo \$b
  4. 123
  5. [oracle@s12071 ~]$ a=968
  6. [oracle@s12071 ~]$ eval echo \$b
  7. 968
  8. [oracle@s12071 ~]$
复制代码
为什么eval echo \$$b 全都变成了 eval echo \$b
作者: bbgg1983    时间: 2010-06-23 10:01

我有罪,看帖不仔细,楼主我对不起你
作者: bbgg1983    时间: 2010-06-23 10:05
回复 3# hujysh


    版主貌似手误,把双引号写成单引号了
作者: ly5066113    时间: 2010-06-23 10:15
回复  hujysh


    版主貌似手误,把双引号写成单引号了
bbgg1983 发表于 2010-06-23 10:05



哪里有手误,你们根本没看懂楼主的需求。
作者: bbgg1983    时间: 2010-06-23 10:24
回复 8# ly5066113


a="aaa"
b='$a bbb'
echo $b         # aaa bbb

我的意思是这个地方,单引号的话,下面那行不会是aaa bbb吧
作者: ywlscpl    时间: 2010-06-23 10:26
b='$a bbb'
用了单引号,就相当于b="\$a bbb",更简洁了
作者: ly5066113    时间: 2010-06-23 10:35
回复 9# bbgg1983


这正是斑竹高明的地方,用双引号,值就定死了,无法动态变化了。
就象我们设置PS1,想让它显示当前的路径,那么我们就需要用:

PS1='$PWD'
作者: hujysh    时间: 2010-06-23 10:50
$ cat a
#!/bin/sh

a="aaa"
b='$a bbb'
echo $b         # aaa bbb

a="111"
eval echo $b

$ sh a
$a bbb
111 bbb
作者: bbgg1983    时间: 2010-06-23 10:54
回复 11# ly5066113
我之愚钝,以至于斯,听诸君一席话,如拨云雾而见青天。
作者: vivian2086    时间: 2010-06-23 11:37
a="aaa"
b='$a bbb'
echo $b         # aaa bbb

a="111"
eval echo $b
waker 发表于 2010-06-23 09:48



    谢谢!
作者: vivian2086    时间: 2010-06-23 11:40
回复  ly5066113
我之愚钝,以至于斯,听诸君一席话,如拨云雾而见青天。
bbgg1983 发表于 2010-06-23 10:54



    不是你提醒单引号我还不没看出差别。。。原来隐藏了\$。
    我知道indirect ref,不过用法是a=b; b="ccc"; a=\$$a 这种,我怎么改都没改出我要的效果。也直接用过b="\$a bbb", 但是没用eval。。。
作者: ly5066113    时间: 2010-06-23 12:11
回复 13# bbgg1983


文采不错,有黑哥的风范。





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2