命令代换$()和``的区别

来源:互联网 发布:余德耀美术馆 知乎 编辑:程序博客网 时间:2024/05/17 16:15

命令代换

由反引号括起来的也是⼀一条命令,Shell先执⾏行该命令,然后将输出结果立刻代换到当前命令行
中。

如:
$ DATE=`date`
$ echo $DATE

输出:


例如定义⼀一个变量存放date命令的输出:
命令代换也可以⽤用$()表⽰示: DATE=$(date)


区别

  1. ``在执行时,shell会不管``内是什么都先进行解释,再把解释后的最终结果送给shell去执行.如果解释后的最终结果不是shell可执行的命令时,则会出错.当然,仅仅为了把``中执行后的内容作为文本输出,则没什么问题了啦.

  2.  $()在执行时,如果()中是命令,则直接丢给shell去执行;如果是变量取值,则也仅作第一层的字面解释后丢给shell去执行.

(2)使用场合

  1. $()用在产生的结果不会再送给shell解释,而只作为赋值时直接使用,文本输出时与""配合使用;

  2. $()有在产生的结果还会再作进一步解释时,用与不用都可以,只是提高程序可读性之外。

在操作上,这两者都能达到相应的效果,但是建议使用$( ),理由如下:

  1. ``很容易与''搞混乱。

  2. 在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观。

  3. $( )的弊端是,并不是所有的类unix系统都支持这种方式,反引号基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。

  4. ``(反引号)需要进行转义。而$( )无需转义。



` `输出localhost.localdomain



$()输出命令$HOSTNAME








原创粉丝点击