免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lseeo
打印 上一主题 下一主题

``,$()区别 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-03-23 14:26 |只看该作者
原帖由 locale 于 2009-3-23 14:03 发表

刚刚看完bz给的链接,受益匪浅


恭喜你受益匪浅 ,既然已经“非浅”了,那你能否解释一下楼主的疑问呢?

论坛徽章:
0
12 [报告]
发表于 2009-03-23 14:32 |只看该作者
原帖由 飞鸿无痕 于 2009-3-23 12:55 发表
使用$()显然比``优越,这是因为:
其一,前者更易读,不会产生歧义。而反引号`常常被初学者当成单引号';
其二,前者嵌套时更简单,直接使用就行。而后者嵌套时内部的反引号必须用\转义;
其三,它们对反斜杠 ...



我觉得``更容易读

  不过你说的嵌套是什么意思?能否给个例子?

论坛徽章:
0
13 [报告]
发表于 2009-03-23 15:25 |只看该作者
VALUE=`{ sqlplus -s <<-END
                        / as sysdba
                        set heading off
                        col name for a20
                        col value for a40
                        select name, value
                        from v\\\$parameter
                        where name='dump';
                END
                } | grep $value


能否解释一下为什么是v\\\$parameter?

[ 本帖最后由 flyingbig 于 2009-3-23 16:08 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2009-03-23 16:09 |只看该作者
原帖由 dream3401 于 2009-3-23 14:26 发表


恭喜你受益匪浅 ,既然已经“非浅”了,那你能否解释一下楼主的疑问呢?

不知道怎么回复你,我看的是版主给的一个链接,抱着学习的态度去看前人的帖子,我所说的是看完版主给的帖子觉得受益匪浅,我也没有说我知道lz的答案,难道看完版主给的连接就一定知道lz的答案了,你这样反问我是什么意思,我只是个菜鸟初学,不过lz的问题,刚才我找了半天,也不知道什么原因。当我刚才测试了一下lz的东西,发现反引号后的4个反斜杠能出来一个反斜杠,而括号的两个出来一个反斜杠,会不会是在反引号中的反斜杠被转义了两次?

  1. [root@localhost:/test]# echo `echo \\`

  2. [root@localhost:/test]# echo `echo \\\\`
  3. \
  4. [root@localhost:/test]# echo `echo \\\\\\`
  5. \
  6. [root@localhost:/test]# echo `echo \\\\\\\\`
  7. \\
  8. [root@localhost:/test]# echo `echo \\\\\\\\\\`
  9. \\
  10. [root@localhost:/test]# echo `echo \\\\\\\\\\\\`
  11. \\\
  12. [root@localhost:/test]# echo $(echo \\)
  13. \
  14. [root@localhost:/test]# echo $(echo \\\\)
  15. \\
  16. [root@localhost:/test]# echo $(echo \\\\)
  17. \\
  18. [root@localhost:/test]# echo $(echo \\\\\\)
  19. \\\
  20. [root@localhost:/test]# echo $(echo \\\\\\\\)
  21. \\\\
  22. [root@localhost:/test]#
复制代码

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
15 [报告]
发表于 2009-03-23 16:16 |只看该作者

回复 #14 locale 的帖子

鸡鸡哥,搞个够雷的啊。

论坛徽章:
0
16 [报告]
发表于 2009-03-23 16:19 |只看该作者
原帖由 blackold 于 2009-3-23 16:16 发表
鸡鸡哥,搞个够雷的啊。

黑哥是否知道lz的答案,为啥echo后不一样

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
17 [报告]
发表于 2009-03-23 16:23 |只看该作者

回复 #16 locale 的帖子

不知道你就雷倒它:
echo `echo \\` ;传给"内部(``内的)"echo的参数为\,经shell解析后为空,"内部"echo输出为空,所以"外部命令"为echo, 最后结果为空。

搞错了, 不是空,因为echo附加了\n.

[ 本帖最后由 blackold 于 2009-3-23 16:26 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2009-03-23 16:47 |只看该作者
原帖由 blackold 于 2009-3-23 16:23 发表
不知道你就雷倒它:
echo `echo \\` ;传给"内部(``内的)"echo的参数为\,经shell解析后为空,"内部"echo输出为空,所以"外部命令"为echo, 最后结果为空。

搞错了, 不是空,因为echo附加了\n.

上面的解释我明白了,但是
echo $(echo \\)为什么会出来一个\
按照上面的理解,应该最后是,echo $\
最后应该是>,而不应该是\,对吧

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
19 [报告]
发表于 2009-03-23 17:01 |只看该作者

回复 #18 locale 的帖子

怎么会有$\?

论坛徽章:
0
20 [报告]
发表于 2009-03-23 17:06 |只看该作者
原帖由 blackold 于 2009-3-23 17:01 发表
怎么会有$\?

echo \\运行的结果是\
那么
echo $(echo \\)也就是echo $\了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP