Spiegazione dell’operatore colon in “: $ {pippo = valore}”

Capisco l’operatore di due punti in bash che agisce come un null , e so che è usato nell’espansione dei parametri , oltre ad essere usato in altri modi, ma qualcuno può spiegare questo:

: ${SOMETHING='value'} 

Dalla sperimentazione so che questo imposta la variabile d’ambiente $SOMETHING su 'value' ma perché?

“Solo perché lo fa” è una risposta valida, ma per favore mi indichi la documentazione (che non riesco a trovare) o un nome appropriato per questo utilizzo sarebbe utile. Spero che ci sia una spiegazione più illuminante.

L’espressione imposta SOMETHING su value se non è già impostato. Questo è un operatore utile da avere in molte situazioni. Tuttavia, restituisce anche il valore assegnato, quindi se si esegue semplicemente

 ${SOMETHING='value'} 

allora la tua shell proverà a invocare il value comando. Questo potrebbe o non potrebbe fare qualcosa di indesiderato; come minimo avrebbe gettato un messaggio “valore: comando non trovato”.

Per evitare ciò, puoi usare il no-op:, che valuta il suo argomento e poi lo getta via, piuttosto che eseguirlo.

Spiegato qui: http://tldp.org/LDP/abs/html/parameter-substitution.html

Se il parametro non è impostato, impostarlo su default.

Entrambe le forms sono quasi equivalenti. Il: fa la differenza solo quando il parametro $ è stato dichiarato ed è null, [1] come sopra.

 echo ${var=abc} # abc echo ${var=xyz} # abc # $var had already been set to abc, so it did not change.