Question

Je dois vérifier si les args sont des noms de fichiers valides, est-ce la bonne façon de le faire? Il semble que je fait une erreur en ligne de 2, mais je ne sais pas où.

for i in ${@}; do                                   
if [ -f ${i}]; then                             
    echo ${i}
else continue
fi
done
Était-ce utile?

La solution

Tout d'abord, vous avez besoin d'un espace avant le crochet fermant. Et vous devriez citer vos variables dans le cas où il y a un espace dans un nom de fichier.

for i in "${@}"; do 
if [ -f "${i}" ]; then
    echo "${i}"
else continue
fi
done

Le « else continue » est inutile, à moins que c'est un espace réservé pour autre chose que vous envisagez de mettre en place des « continue ».

Autres conseils

Voici une solution laconique, qui fonctionne même si les noms de fichiers contiennent des espaces:

for i
do
    test -f "$i" && echo "$i"
done

Notez que pour la déclaration prend les arguments de ligne de commande, il n'y a pas besoin de taper plus. La commande de test est une façon courte si .. alors .. fi

-f vérifie que $ {i} est un fichier régulier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top