6
votes

Pour la boucle pour savoir si le répertoire existe dans UNIX

Je souhaite utiliser un script qui vérifie si une liste de répertoires existe ou non et il doit en même temps d'imprimer un message personnalisé que j'envoie.

Par exemple: P>

J'ai Un script qui valide si répertoire existe ou non: p> xxx pré>

maintenant je veux appeler ce script comme celui-ci: p>

./check.sh $DIR1 msg1 $Dir2 msg2 $Dir3 msg3


0 commentaires

3 Réponses :


7
votes

Essayez ceci:

if (( $# % 2 ))
then
    echo "Provide an even number of parameters"
    exit 1
fi


4 commentaires

Le pendant peut simplement être ($ #)) (test si le nombre de paramètres de position est non nul).


Puisque vous voulez 2 paramètres par boucle: pendant [["$ 2"]]


Merci à @cheppner: j'ai signalé vos suggestions dans ma réponse


Merci à @glennjackman, j'ai signalé votre suggestion dans ma réponse



4
votes

CHEPNER dit:

La condition tandis que la condition peut simplement être ($ #)) (test si le nombre de paramètres de position est non nul).

Chaitanya dit:

Salut Cheppner, merci d'avoir fourni une solution alternative, pouvez-vous s'il vous plaît dites-moi comment la condition tandis que la condition doit ressembler afin d'utiliser $ #, j'ai essayé différentes manières, mais cela ne fonctionne pas pour moi.

Voici un échantillon rapide: xxx

le tandis que (($ #)) sera vrai tant qu'il y aura des arguments de ligne de commande. Faire le Shift élimine deux fois les arguments de la liste. Quand plus d'arguments, la boucle tandis que la boucle est terminée.


0 commentaires

0
votes

@zac a la bonne réponse.

Un astuce pour le message: Utilisez un printf Chaîne de format: xxx

et dans le Script: xxx


2 commentaires

Merci Glenn, pouvez-vous s'il vous plaît laissez-moi savoir quand puis-je utiliser la commande echo et quand dois-je utiliser printf ?


ECHO a simplement concaté ses arguments et les distribue. Vous pouvez utiliser PrintF si vous avez besoin de contrôle plus fin sur le formatage (E.G. Imprimer un numéro avec des Zeros Printf% 05d $ n ). Printf a également une fonctionnalité intéressante qu'il réutilisera la chaîne de format s'il y a plus d'arguments que des espaces réservés, donc printf "% s \ n" "$ @" est un joli raccourci pour pour ARG dans "$ @"; faire écho "$ arg"; fait