免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2930 | 回复: 4
打印 上一主题 下一主题

[其他] 关于二次变量替换eval的一个疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-05 18:31 |只看该作者 |倒序浏览
本帖最后由 450917663 于 2014-08-05 18:35 编辑
  1. $ MYNAME=SOURCE
  2. $ PRE=MY
  3. $ eval echo \${PRE}NAME
  4. SOURCE
  5. $ re=`eval echo \${PRE}NAME`
  6. $ echo $re
  7. 61435{PRE}NAME
  8. $ re2=`eval echo \\${PRE}NAME`
  9. 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

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2014-08-05 19:06 |只看该作者
本帖最后由 reyleon 于 2014-08-05 19:14 编辑

好吧,我看错了... 还有,代码块放三个$符号就会出现$符号了

论坛徽章:
0
3 [报告]
发表于 2014-08-06 09:36 |只看该作者
没人么????

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
4 [报告]
发表于 2014-08-06 09:44 |只看该作者
命令替换使用$()的形式,两个反引号以后会被废弃

论坛徽章:
0
5 [报告]
发表于 2014-08-06 10:06 |只看该作者
反引号兼容性比$()好,基本可以适用所有shell,虽然没有它直观。。这个见仁见智。。回复 4# lifayi2008


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP