Il comando :
è il null utility:
Questa utility deve espandersi solo argomenti del comando. Viene utilizzato quando è necessario un comando, come nella condizione allora di un comando if, ma nulla deve essere eseguito dal comando.
anche Bourne Shell Builtins:
fare nulla al di là espansione argomenti e l'esecuzione di reindirizzamenti. Lo stato di ritorno è zero.
Il ${foo:=bar}
sintassi è una speciale Parameter Expansion:
${parameter:=[word]}
Valori Assegna default. Se il parametro non è impostato o è nullo, l'espansione della parola (o una stringa vuota se la parola è omessa) deve essere assegnata al parametro. In tutti i casi, il valore finale del parametro deve essere sostituito. Solo variabili, non parametri posizionali o parametri speciali, possono essere assegnati in questo modo.
manuale Bash Reference entry:
${parameter:=word}
Se il parametro è posto o è nullo, l'espansione di parola è assegnato al parametro. Il valore del parametro viene quindi sostituito. I parametri posizionali e i parametri speciali non possono essere assegnati in questo modo.
Quindi la riga di comando nella sua domanda:
: ${foo:=bar}; export foo
è di due comandi:
: ${foo:=bar}
export foo
Il primo dei quali si espande la variabile di 012.e se è vuoto o non impostato assegna il valore bar
.
Il secondo esporta la variabile foo
per sotto-shell e altri processi.
fonte
2015-05-08 14:23:25
Lo hai inserito in uno script di bash e lo hai testato? – Almo
Non proprio un duplicato di quella domanda dal momento che non copre qui il bit di espansione dei parametri (anche se quale parte di questo viene posta esattamente non è chiara). –
Vedere questo: http://stackoverflow.com/questions/7444504/explanation-of-this-use-of-the-colon-operator – tolanj