Quelle commande utiliser pour vérifier qu'un répertoire existe en script shell Bash ?

Dans un script Shell il est possible de vérifier si un répertoire existe. Pour cela, on utilise l'opérateur de test -d.

Dans un script Shell il est possible de vérifier si un répertoire existe. Pour cela, on utilise l'opérateur de test -d qui renvoie vrai si la chaîne qui le suit correspond à un répertoire. Exemple :

if [ -d $REPERTOIRE ]; then
 # Code exécuté si la variable $REPERTOIRE correspond bien à un répertoire
fi

Il faut cependant faire attention car un lien symbolique sera également considéré comme un répertoire. Or certaines commandes s'appliquant à un répertoire ne fonctionnent pas pour un lien symbolique. C'est le cas par exemple de la commande rmdir qui permet de supprimer un répertoire.

Utiliser cette commande sur un lien symbolique produira une erreur d'exécution qui fera arrêter le script. Si vous souhaitez séparer le traitement des liens symboliques du traitement d'un répertoire, utilisez l'opérateur de test -L qui retourne vrai si la chaîne qui le suit est un lien symbolique :

if [ -d $LIEN_OU_REPERTOIRE ]; then
if [ -L $LIEN_OU_REPERTOIRE ]; then
# La variable $LIEN_OU_REPERTOIRE est un lien symbolique
else
# La variable $LIEN_OU_REPERTOIRE est un répertoire
fi
fi

Divers