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> maintenant je veux appeler ce script comme celui-ci: p> ./check.sh $DIR1 msg1 $Dir2 msg2 $Dir3 msg3
3 Réponses :
Essayez ceci:
if (( $# % 2 )) then echo "Provide an even number of parameters" exit 1 fi
Le pendant code> peut simplement être
($ #)) code> (test si le nombre de paramètres de position est non nul).
Puisque vous voulez 2 paramètres par boucle: pendant [["$ 2"]] code>
Merci à @cheppner: j'ai signalé vos suggestions dans ma réponse
Merci à @glennjackman, j'ai signalé votre suggestion dans ma réponse
CHEPNER dit:
La condition tandis que la condition peut simplement être
($ #)) code> (test si le nombre de paramètres de position est non nul). P> BlockQuote>
Chaitanya dit: P>
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. P> blockQuote>
Voici un échantillon rapide: p>
xxx pré> le
tandis que (($ #)) code> sera vrai tant qu'il y aura des arguments de ligne de commande. Faire le
Shift Code> élimine deux fois les arguments de la liste. Quand plus d'arguments, la boucle tandis que la boucle est terminée. P> p>
@zac a la bonne réponse.
Un astuce pour le message: Utilisez un et dans le Script: p> printf code> Chaîne de format: p>
Merci Glenn, pouvez-vous s'il vous plaît laissez-moi savoir quand puis-je utiliser la commande echo code> et quand dois-je utiliser
printf code>?
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 code>). 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" "$ @" code> est un joli raccourci pour
pour ARG dans "$ @"; faire écho "$ arg"; fait code>