-2
正如幾個論壇和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"`
正如幾個論壇和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"`
而這背後的整個事情是,當bash看到第一`
,它試圖找到另外一個,取代它的方式,所有\$, \` and \\
,
導致更換\$1
與$1
,然後,
時代以"..."
裏面的一切,$1
不再逃脫,被視爲在shell腳本本身(這是在我的情況下,一個空字符串)第一agrument代替b eing作爲$1
按原樣傳遞給gawk。
這是在shell中不使用`...`
的另一個原因。
可能重複的[Shell編程:$(command)和\'command \'之間的區別是什麼](http://stackoverflow.com/questions/4708549/shell-programming-whats-the-difference-between-命令和命令)。那裏被接受的答案提到「存在一些細微差別,例如反斜槓是如何解析的」。 – l0b0
我引用了同一個問題,但詳細地描述了'反斜槓是如何解析'的區別是什麼,乍一看你可能認爲差異會影響性能或者不重要,執行的結果總是相同的,不是這樣。 – Ixanezis
解析差異在原始答案中指出。如果您有任何其他信息,在這裏指出它可能會更有用。 – l0b0