$()和``已审核之间的差异

时间:2012-12-29 13:12:33

标签: shell

正如在几个论坛和on stackoverflow中所提到的,这两种命令替代方式在shell中没有区别。

但是,有。这是一个真实的例子:

# this command works fine:
$(cat $LOG_FILE | gawk "(\$1 \$2) > $TIME")

# this one does not:
`cat $LOG_FILE | gawk "(\$1 \$2) > $TIME"`

1 个答案:

答案 0 :(得分:1)

这背后的全部内容是,当bash看到第一个`时,它会尝试找到另一个,在其路上替换所有\$, \` and \\

导致用\$1替换$1,然后

当替换"..."内的所有内容时,$1不再被转义,并被视为shell脚本本身的第一个agrument(在我的情况下是一个空字符串),而不是作为$1按原样g。地说。

这是在shell中不使用`...`的另一个原因。