Chinaunix首页 | 论坛 | 博客
  • 博客访问: 993203
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-07-22 16:36:49

Bash中的command substitution
bash中的命令替换有两种方法:
(1) $(command)
(2) `command`

   在``里,可以使用backslash字符,且只有它后面紧跟'$' '`' '\'时,baskslash才有转义效果。
   manuan里面说$里的内容全都是应该当作command的内容,不允许有特殊功能字符出现,我就纳闷了,
echo $(cat $(echo "1.h")) 就是合法的命令,如果$的括号内不不允许特殊功能字符,那$是吃屎的阿。所以manual里面的有些话不敢信。这就是nested 命令

    echo `cat \`echo "1.h"\`` 也可以达到同样的效果,结果就是将文件1.h的内容打印出来了。

    在脚本中进行命令替换要注意一点,如下脚本中:
    test.sh内容:
    `echo "haha"`
    表面挂上看是合法的,但是非法的,因为他与
    echo "haha"
    是不一样的,前者将命令执行时向stdout的输出作为命令结果并直接在校本中将命令替换成haha。然后脚本解释器就会报错,无法识别haha。而后者不一样,它直接执行,并将结果直接写到标准输出了。这就是在校本中调用echo和通过命令替换调用echo的区别,当然$(echo "haha")也会出同样的错误。

   因此命令替换不能孤单的放在那里,必须加上别的命令去处理它。


阅读(2349) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~