Il n'y a aucun avantage à affecter une chaîne vide à une variable, puis à lui affecter immédiatement une autre chaîne variable. Une affectation d'une valeur à une variable shell remplacera complètement sa valeur précédente.
Il n'y a à ma connaissance aucune recommandation qui dit que vous devez explicitement initialiser des variables pour vider des chaînes. En fait, cela peut masquer des erreurs dans certaines circonstances (erreurs qui seraient autrement apparentes si vous exécutez sous set -u
, voir ci-dessous).
Une variable non définie, inutilisée depuis le début d'un script ou explicitement annulée en exécutant la unset
commande dessus, n'aura aucune valeur. La valeur d'une telle variable ne sera rien. S'il est utilisé en tant que "$myvariable"
, vous obtiendrez l'équivalent de ""
et vous n'obtiendrez jamais de "données d'ordures".
Si l'option shell nounset
est définie avec l'un set -o nounset
ou l' autre set -u
, alors référencer une variable non définie entraînera une erreur du shell (et un shell non interactif se terminera):
$ set -u
$ echo "$myvariable"
/bin/sh: myvariable: parameter not set
ou, en bash
:
$ set -u
$ echo "$myvariable"
bash: myvariable: unbound variable
Les variables shell seront initialisées par l'environnement si le nom de la variable correspond à une variable d'environnement existante.
Si vous vous attendez à ce que vous utilisiez une variable qui peut être initialisée par l'environnement de cette manière (et si elle n'est pas souhaitée), alors vous pouvez explicitement la désactiver avant la partie principale de votre script:
unset myvariable # unset so that it doesn't inherit a value from the environment
ce qui la supprimerait également en tant que variable d'environnement, ou, vous pouvez simplement ignorer sa valeur initiale et la remplacer par une affectation (ce qui ferait également changer la valeur de la variable d'environnement).
Vous ne rencontreriez jamais de déchets non initialisés dans une variable shell (sauf si, comme indiqué, ces déchets existaient déjà dans une variable d'environnement du même nom).