2 votes

chronologie de l'exécution séquentielle de bash

Disons que je tape les commandes suivantes :

/usr/local/bin/wget -O "/storehere.xml" "download1" && ./parse_xml;/usr/local/bin/wget -O "/storehere.xml" "download2" && ./parse_xml;

D'après ce que j'ai compris, le shell exécutera parse_xml après que download1 ait été récupéré et stocké. Cependant, ce qui n'est pas clair pour moi, c'est quand la prochaine commande wget pour le téléchargement 2 sera exécutée ? Après l'exécution de parse_xml (la première fois bien sûr) ? Ou après qu'une demande d'exécution de parse_xml ait été faite ? Si la réponse est la dernière, j'aimerais connaître un moyen de faire en sorte que mon script attende un code de retour de parse_xml avant d'exécuter le prochain wget.

Merci.

2voto

sampson-chen Points 13413

Dans votre cas, chaque commande est invoquée et terminée avec succès (ou échouée) avant que la commande suivante ne soit invoquée.

Explication :

  • El && La notation qui délimite différentes commandes sur une seule ligne signifie "Si la commande avant && s'est exécutée avec succès (code de retour, $? est égal à zéro), alors effectuez la commande après le &&".
  • El ; qui délimite différentes commandes sur une même ligne signifie "Exécutez la commande avant le ';', puis la commande après, que la première commande ait réussi ou non.

Pour tester cela, vous pouvez essayer ces 2 commandes différentes sur votre prompt :

# wget will fail in both cases:

# case 1, with &&
$ wget hello && ls

# case 2, with ;
$ wget hello; ls

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X