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?
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?
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.
Vedo che i backtick possono anche essere annidati. Ad esempio: '\' echo \\ 'foo \\' \ '' –
@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
C'è una differenza semantica: la sintassi backtick gestisce i backslash in modo diverso e non ovvio. Vedi: http://mywiki.wooledge.org/BashFAQ/082 – benkc