28 votes

Tester si une variable Bash est désactivée, en utilisant une fonction.

Un test simple de la variable Bash :

${varName:?    "${varName} is not defined"}

J'aimerais réutiliser ceci, en le mettant dans une fonction. Comment puis-je le faire ?

Les échecs suivants

#
# Test a variable exists
tvar(){
 val=${1:?    "${1}    must be defined, preferably in $basedir"}
 if [ -z ${val}  ]
     then
     echo Zero length value
 else
     echo ${1} exists, value ${1}
 fi
}

C'est-à-dire que je dois sortir si le test échoue.

0 votes

Votre titre dit "unset", mais votre exemple teste "unset ou set à la chaîne vide". Quel est le cas qui vous intéresse ?

1voto

user381689 Points 51

Je ne sais pas si c'est exactement ce que vous voulez, mais une astuce pratique que j'utilise lorsque j'écris un script nouveau et complexe est d'utiliser "set -o".

set -o #fera en sorte que le script fasse une bombe lorsqu'il trouvera une variable non fixée.

EG :

$ grep '$1' chex.sh

cas "$1" dans

$ ./chex.sh

./chex.sh : ligne 111 : $1 : variable non liée

$ ./chex.sh foo

incorrect/aucune option n'est passée sortie

0voto

user304863 Points 1
if set | grep -q '^VARIABLE='
then
    echo VARIABLE is set
fi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X