正如在几个论坛和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"`
答案 0 :(得分:1)
这背后的全部内容是,当bash看到第一个`
时,它会尝试找到另一个,在其路上替换所有\$, \` and \\
,
导致用\$1
替换$1
,然后
当替换"..."
内的所有内容时,$1
不再被转义,并被视为shell脚本本身的第一个agrument(在我的情况下是一个空字符串),而不是作为$1
按原样g。地说。
这是在shell中不使用`...`
的另一个原因。