Je voudrais m'assurer qu'à un certain point d'un script, après avoir source
créé un fichier de configuration, plusieurs variables sont définies et, si ce n'est pas le cas, arrêter l'exécution en informant l'utilisateur de la variable manquante. j'ai essayé
for var in $one $two $three ; do
...
mais si par exemple $two
n'est pas défini, la boucle n'est jamais exécutée pour $two
. La prochaine chose que j'ai essayée était
for var in one two three ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi
done
Mais si deux n'est pas défini, je reçois toujours "deux est défini sur" au lieu de "deux n'est pas défini".
Comment puis-je m'assurer que toutes les variables requises sont définies?
Mise à jour / Solution: je sais qu'il y a une différence entre "set" et "set, but empty". J'utilise maintenant (grâce à /programming//a/16753536/3456281 et les réponses à cette question) les éléments suivants:
if [ -n "${!var:-}" ] ; then
ainsi, s'il var
est défini mais vide, il est toujours considéré comme invalide.
set -u
au début de votre script pour le terminer immédiatement lorsqu'une variable non définie est utilisée.