2012-12-29 41 views
-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"` 
+0

可能重複的[Shell編程:$(command)和\'command \'之間的區別是什麼](http://stackoverflow.com/questions/4708549/shell-programming-whats-the-difference-between-命令和命令)。那裏被接受的答案提到「存在一些細微差別,例如反斜槓是如何解析的」。 – l0b0

+0

我引用了同一個問題,但詳細地描述了'反斜槓是如何解析'的區別是什麼,乍一看你可能認爲差異會影響性能或者不重要,執行的結果總是相同的,不是這樣。 – Ixanezis

+0

解析差異在原始答案中指出。如果您有任何其他信息,在這裏指出它可能會更有用。 – l0b0

回答

1

而這背後的整個事情是,當bash看到第一`,它試圖找到另外一個,取代它的方式,所有\$, \` and \\

導致更換\$1$1,然後,

時代以"..."裏面的一切,$1不再逃脫,被視爲在shell腳本本身(這是在我的情況下,一個空字符串)第一agrument代替b eing作爲$1按原樣傳遞給gawk。

這是在shell中不使用`...`的另一個原因。