Je suis en train de vérifier la valeur d'une variable d'environnement et en fonction de la valeur, je fais certaines choses et cela fonctionne bien tant que la variable est définie. Mais quand ce n'est pas le cas, j'obtiens tout un tas d'erreurs (car BASH essaie de comparer la chaîne que je spécifie avec une variable non définie, je suppose).
J'ai essayé d'implémenter une vérification supplémentaire pour éviter que cela ne se produise mais sans succès. Le bloc de code que j'utilise est :
#!/bin/bash
if [ -n $TESTVAR ]
then
if [ $TESTVAR == "x" ]
then
echo "foo"
exit
elif [ $TESTVAR == "y" ]
then
echo "bar"
exit
else
echo "baz"
exit
fi
else
echo -e "TESTVAR non définie\n"
fi
Et voici la sortie :
$ export TESTVAR=x
$ ./testenv.sh
foo
$ export TESTVAR=y
$ ./testenv.sh
bar
$ export TESTVAR=q
$ ./testenv.sh
baz
$ unset TESTVAR
$ ./testenv.sh
./testenv.sh: ligne 5: [: ==: opérateur unaire attendu
./testenv.sh: ligne 9: [: ==: opérateur unaire attendu
baz
Ma question est, est-ce que 'unset TESTVAR' ne devrait pas le rendre nul ? Apparemment ce n'est pas le cas...