Je suis tombé sur un fichier bash qui a quelque chose comme ça
MYVAR := SomeVal
Je sais qu'après avoir lu des tutoriels, vous définissez des valeurs en tant que telles
MYVAR = SomeVal
Quelle est la différence entre les deux ci-dessus?
Je suis tombé sur un fichier bash qui a quelque chose comme ça
MYVAR := SomeVal
Je sais qu'après avoir lu des tutoriels, vous définissez des valeurs en tant que telles
MYVAR = SomeVal
Quelle est la différence entre les deux ci-dessus?
Réponses:
Vous avez probablement vu une extension de paramètre pour définir une valeur par défaut.
La différence est de savoir si la variable est non définie ou est définie avec une valeur null:
quand la variable est non définie, il n'y a pas de différence
$ unset MYVAR; : ${MYVAR:=SomeVal}; echo "$MYVAR"
SomeVal
$ unset MYVAR; : ${MYVAR=SomeVal}; echo "$MYVAR"
SomeValquand la variable a une valeur, il n'y a pas de différence
$ MYVAR="foo"; : ${MYVAR:=SomeVal}; echo "$MYVAR"
foo
$ MYVAR="foo"; : ${MYVAR=SomeVal}; echo "$MYVAR"
fooquand la variable a une valeur nulle:
$ MYVAR=""; : ${MYVAR:=SomeVal}; echo "$MYVAR"
SomeVal
$ MYVAR=""; : ${MYVAR=SomeVal}; echo "$MYVAR"
# empty line