$( ) 和 ' '的区别

命令替换:

在bash中,$( ) 和 ' '(反引号)都是用来作命令替换的。
命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。


在操作上,这两者都能达到相应的效果,BUT:

  • `` 很容易与 '' 混淆

  • 在多层次的符合替换中,``必须要额外的转义处理(\反斜线),而$()比较直观

  • $()的弊端是,并不是所有的类UNIX系统都支持这种方式,但反引号使肯定支持的


eval

e v a l命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两 次扫描的变量有时被称为复杂变量。不过这些变量本身并不复杂。e v a l命令也可以用于回显简单变量,不一定是复杂变量。