命令代换
-
``在执行时,shell会不管``内是什么都先进行解释,再把解释后的最终结果送给shell去执行.如果解释后的最终结果不是shell可执行的命令时,则会出错.当然,仅仅为了把``中执行后的内容作为文本输出,则没什么问题了啦.
-
$()在执行时,如果()中是命令,则直接丢给shell去执行;如果是变量取值,则也仅作第一层的字面解释后丢给shell去执行.
-
$()用在产生的结果不会再送给shell解释,而只作为赋值时直接使用,文本输出时与""配合使用;
-
$()有在产生的结果还会再作进一步解释时,用与不用都可以,只是提高程序可读性之外。
-
``很容易与''搞混乱。
-
在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观。
-
$( )的弊端是,并不是所有的类unix系统都支持这种方式,反引号基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。
-
``(反引号)需要进行转义。而$( )无需转义。
` `输出localhost.localdomain
$()输出命令$HOSTNAME