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