Plus d'informations : How to skip the for loop when there are no matching files ?

Description de la problématique

Soit un répertoire vide, sur lequel on effectue la commande suivante :

for i in *.xls
do
    echo $i
done

Le programme va retourner :

*.xls

Ce qui se révèle très problématique lors de l’exécution d’une commande dans le for.

Résolution de la problématique

La commande

shopt - s nullglob

va permettre de bloquer ce comportement.

shopt - s nullglob
for i in *.xls
do
    echo $i
done

Le programme va alors retourner :

 Explication

nullglob est une option du Shell Bash qui modifie l’interprétation des métacaractères glob. Il va notamment, dans le cas où le modèle ne correspond à aucun fichier demandé, ne rien renvoyer au lieu de lui même.

Accueil > Linux > Développement > [BASH] Comment ne pas exécuter une boucle for quand aucun fichier ne (...)