Chinaunix
标题:
关于二次变量替换eval的一个疑问
[打印本页]
作者:
450917663
时间:
2014-08-05 18:31
标题:
关于二次变量替换eval的一个疑问
本帖最后由 450917663 于 2014-08-05 18:35 编辑
$ MYNAME=SOURCE
$ PRE=MY
$ eval echo \${PRE}NAME
SOURCE
$ re=`eval echo \${PRE}NAME`
$ echo $re
61435{PRE}NAME
$ re2=`eval echo \\${PRE}NAME`
SOURCE
复制代码
eval直接执行,需要一个反斜杠转义第一个$符号,就可以实现二次替换。
而如果将整个命令放到反引号中,将结果赋值给变量,就需要两个反斜杠转义,否则就会歪了,请问这个如何解释?
求大神现身说法。。
代码框自动减少一个$,坑。。更改如下:
$ MYNAME=SOURCE
$ PRE=MY
$ eval echo \$${PRE}NAME
SOURCE
$ re=`eval echo \$${PRE}NAME`
$ echo $re
61435{PRE}NAME
$ re2=`eval echo \\$${PRE}NAME`
$ echo $re2
SOURCE
作者:
reyleon
时间:
2014-08-05 19:06
本帖最后由 reyleon 于 2014-08-05 19:14 编辑
好吧,我看错了... 还有,代码块放三个$符号就会出现$符号了
作者:
450917663
时间:
2014-08-06 09:36
没人么????
作者:
lifayi2008
时间:
2014-08-06 09:44
命令替换使用$()的形式,两个反引号以后会被废弃
作者:
450917663
时间:
2014-08-06 10:06
反引号兼容性比$()好,基本可以适用所有shell,虽然没有它直观。。这个见仁见智。。
回复
4#
lifayi2008
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2