2011-12-18 26 views

risposta

9

Si ottiene lo stesso effetto.

Il $() è consigliato poiché è più leggibile e rende più facile nidificare uno $() in un altro $().

Aggiornamento:

La sintassi $() è uno standard POSIX 1003.1 (edizione 2004). Tuttavia, su alcuni sistemi UNIX precedenti (SunOS, HP-UX, ecc.) Lo /bin/sh non lo capisce.

Potrebbe essere necessario utilizzare backtick "`" invece o utilizzare un altro shell (di solito è ksh) se è necessario lo script di lavorare su tale ambiente.

Se non si sa quale sintassi da utilizzare - utilizzare $(). La sintassi backtick è deprecata.

+0

@samus: $() è effettivamente POSIX (1003.2 Penso), ma non funzionerà su vecchi UNIX. Fidati di me - Li uso tutti i giorni. –

+0

ma questo è il punto, quando parliamo di portabilità intendiamo POSIX perché è lo standard corrente supportato dalla maggior parte delle piattaforme, se si hanno requisiti specifici che vanno oltre questo, allora è un caso particolare. –

+0

@samus: Con "più portabile" intendo "funziona su più sistemi operativi" non "è compatibile con i nuovi standard POSIX". –

3

C'è un altro modo per inizializzare una variabile ad uno di default se non si è inizializzato da soli.

[jaypal:~/Temp] a="I have initialized var a" 
[jaypal:~/Temp] echo ${a:="Default value"} 
I have initialized var a 
[jaypal:~/Temp] a= 
[jaypal:~/Temp] echo ${a:="Default value"} 
Default value 
+0

In modo che l'operatore legge il nuovo valore della variabile e restituisce il vecchio valore. :) –

+2

Viene generalmente utilizzato quando si passano i valori allo script come '$ 1',' $ 2' e lo script viene eseguito anche quando tali valori non vengono passati esplicitamente. Con ciò è possibile impostare implicitamente le proprie variabili in modo che vengano eseguite sui valori predefiniti se non è stato loro assegnato un valore. Ciò consente di risparmiare circa 4-5 righe di codice dove si controlla se la variabile è stata assegnata o meno, qualcosa come 'if [-z" $ var "] allora; ... ' –

+0

credo, possiamo o uso, echo $ {a: = "Valore predefinito"} o echo $ {a: - "Il valore di default"} – Indrajeet

Problemi correlati