[shell] traquer les variables non initialisées

Le
Manuel Pégourié-Gonnard
Bonjour,

Ayant subi récemment les conséquences assez désatreuses d'une erreur
dans le nom d'une variable dans un script shell, je me demande s'il y a
des moyens de traquer ce genre d'erreurs en shell. Par exemple, que
l'évaluation d'une variable non initialisée (sauf dans des contextes
particuliers comme test -z "$variable") provoque une erreur, comme c'est
possible dans d'autres langages.

Bon, en fait, je m'attends à ce que la réponse à cette question soit
négative et qu'on ne puisse pas faire ça en shell.

Du coup, ma question suivante est : y a-t-il des méthodes, dans
l'écriture et/ou le test de ses scripts shells, qui permettent de
minimiser la probabilité de telles erreurs ?

Merci d'avance pour vos conseils !

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Cyrille Lefevre
Le #20359451
Manuel Pégourié-Gonnard a écrit :
Bonjour,

Ayant subi récemment les conséquences assez désatreuses d'une err eur
dans le nom d'une variable dans un script shell, je me demande s'il y a
des moyens de traquer ce genre d'erreurs en shell. Par exemple, que
l'évaluation d'une variable non initialisée (sauf dans des contexte s
particuliers comme test -z "$variable") provoque une erreur, comme c'es t
possible dans d'autres langages.

Bon, en fait, je m'attends à ce que la réponse à cette question s oit
négative et qu'on ne puisse pas faire ça en shell.

Du coup, ma question suivante est : y a-t-il des méthodes, dans
l'écriture et/ou le test de ses scripts shells, qui permettent de
minimiser la probabilité de telles erreurs ?

Merci d'avance pour vos conseils !





Bonjour,

set -u est ton ami :

-u nounset Referencing of an unset param-
eter is treated as an error,
unless one of the -, + or =
modifiers is used.

ce qui fait que [[ -z $UNSET_VAR ]] provoque une erreur.
pour palier à ce pb, tu peux utiliser [[ -z ${UNSET_VAR-} ]] ou
le modificateur - entre ${} remplace $UNSET_VAR par une valeur
vide si la variable n'est pas initialisé et ne déclenche pas
d'erreur du à set -u. alternative, [[ ${VAR_SET+set} = set ]]
permet de déterminer si une variable existe qq soit sa valeur.

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Manuel Pégourié-Gonnard
Le #20365201
Cyrille Lefevre scripsit :

set -u est ton ami :



Magnifique ! Je ne sais pas comment j'ai pu le manquer, il est en plein
milieu de la page de man, maintenant que je l'ai trouvé je ne vois que lui.

ce qui fait que [[ -z $UNSET_VAR ]] provoque une erreur.
pour palier à ce pb, tu peux utiliser [[ -z ${UNSET_VAR-} ]] ou
le modificateur - entre ${} remplace $UNSET_VAR par une valeur
vide si la variable n'est pas initialisé et ne déclenche pas
d'erreur du à set -u. alternative, [[ ${VAR_SET+set} = set ]]
permet de déterminer si une variable existe qq soit sa valeur.



Merci pour ces éclaircissements supplémentaire, bien utiles.

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Publicité
Poster une réponse
Anonyme