Bash : sortir automatiquement du script si une variable n'est pas initialisée

Utiliser la commande set -u pour tester l'initialisation des variables

16 novembre 2014

La commande set possède plusieurs options très utiles pour sécuriser vos scripts bash. Parmi elles "set -u", que l'on peut aussi utiliser sous la forme "set -o nounset", permet de sortir automatiquement du script lors de l'utilisation d'une variable non initialisée. En plaçant cette commande en haut de votre script, vous n'aurez donc plus besoin de tester manuellement chaque variable avant de l'utiliser.

Tester automatiquement si une variable est initialisée

#!/bin/bash

echo "Pas d'erreur avant set: "$test;

if [ "$test" == "" ]; then
        echo "On peut voir ainsi qu'une variable n'est pas initialisée";
fi

# A partir d'ici, le script quittera automatiquement
# si une variable n'est pas initialisée
set -u;

# Désactivation du test automatique
set +u;
echo "Cette ligne ne provoquera aucune erreur"$test;

# Réactivation du test automatique
set -u;
echo "Une erreur sera renvoyée : "$test;

echo "Cette ligne n'apparaîtra jamais";

Le résultat du lancement du script

$ ./script.sh
Pas d'erreur avant set:
On peut voir ainsi qu'
une variable n'est pas initialisée
Cette ligne ne provoquera aucune erreur
./script.sh: ligne 20: test : variable sans liaison

Découvrez une autre utilisation de set pour tester automatiquement les codes retours des commandes.

A bientôt !

Par
Créateur et administrateur.

Dans la même catégorie

Git : annuler le dernier commit sans perdre ses modifications
SSHFS : monter un système de fichier avec SSH
Linux : débloquer une interface graphique gelée
Gnome 3 : changer les raccourcis clavier systèmes
Bash : sortir automatiquement du script si une commande échoue
GIT : merger 2 commits
Nginx : mettre un serveur par défaut
GIT : Afficher la branche courante dans le prompt
Couper une vidéo ou une musique sous linux
Debian / Ubuntu : installer HTTPS pour APT
Filtrer les lignes affichées par la commande tail
Apache 2 : Créer des sous-domaines dynamiques
Transférer des fichiers sur un smartphone android sans câble USB
Comment connaitre la taille d'un dossier sous linux ?
Surveiller la sortie d'une commande avec watch
Comment lancer ou arrêter un script au démarrage de Linux ?
Comment connaître la version de mon OS Linux ?
Comment afficher le cache ARP sous Linux ?
GIT : les commandes indispensables
Comment trouver mon adresse IP publique ?
Linux : Comment configurer une adresse IP fixe ?
Comment supprimer les fichiers plus vieux qu'une date donnée en bash ?
Apache 2 : Comment changer le DocumentRoot en fonction du port ?
GIT : Comment ajouter les nouveaux fichiers automatiquement ?
Comment exécuter un script local sur une machine distante avec SSH ?
32 bits ou 64 bits ?
Ecrire dans le sudoers grâce à visudo

Commentaire(s)