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/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cyrille Lefevre
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 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%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
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
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/
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/
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/