Explication de l’opérateur deux-points dans “: $ {foo = value}”

Je comprends l’opérateur de deux-points dans bash qui agit comme un null , et je sais qu’il est utilisé dans l’ extension des parameters , tout en étant utilisé d’autres manières, mais peut-on expliquer ceci:

: ${SOMETHING='value'} 

À partir de l’expérimentation, je sais que cela définit la variable d’environnement $SOMETHING sur 'value' mais pourquoi?

“Juste parce que c’est le cas” est une réponse valide, mais s’il vous plaît, indiquez-moi la documentation (que je n’arrive pas à trouver) ou un nom approprié pour cet usage serait utile. J’espère qu’il y a une explication plus éclairante cependant.

L’expression définit SOMETHING sur value si elle n’est pas déjà définie. C’est un opérateur utile à avoir dans de nombreuses situations. Cependant, il renvoie également la valeur assignée, donc si vous exécutez simplement

 ${SOMETHING='value'} 

alors votre shell essaiera d’appeler la value la commande. Cela pourrait ou non faire quelque chose de indésirable; au moins, il lancerait un message “value: command not found”.

Pour éviter cela, vous pouvez utiliser le no-op:, qui évalue son argument puis le jette au lieu de l’exécuter.

Expliqué ici: http://tldp.org/LDP/abs/html/parameter-substitution.html

Si le paramètre n’est pas défini, définissez-le sur la valeur par défaut.

Les deux formes presque équivalentes. Le: fait une différence uniquement lorsque $ parametre a été déclaré et est nul, [1] comme ci-dessus.

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