2012-01-20 13 views
44

vedo in script bash due forme che diverse sembra fare lo stesso:

`some command` 

e

$(some command) 

Qual è la differenza tra i due, e quando dovrei usare ognuno di loro?

risposta

44

Non c'è alcuna differenza semantica. La sintassi del backtick è la versione più vecchia e meno potente. Vedi man bash, Sezione "Sostituzione del comando".

Se la tua shell supporta la sintassi $(), preferiscilo perché può essere annidato.

+0

Vedo che i backtick possono anche essere annidati. Ad esempio: '\' echo \\ 'foo \\' \ '' –

+10

@MishaMoroshko: espressioni come '\' echo \ 'foo \' \ '(opposto a' $ (echo $ (foo)) ') ha vinto Lavorare in generale a causa dell'ambiguità intrinseca perché ogni '\' 'può essere aperto o chiuso. Potrebbe funzionare per casi speciali a causa di fortuna o caratteristiche speciali. – thiton

+1

C'è una differenza semantica: la sintassi backtick gestisce i backslash in modo diverso e non ovvio. Vedi: http://mywiki.wooledge.org/BashFAQ/082 – benkc

Problemi correlati