129 votes

Bash/sh - différence entre && et ;?

J'utilise habituellement ; de combiner plus d'une commande en ligne, mais certaines personnes préfèrent &&. Quelle est la différence? Par exemple, cd ~; cd - et cd ~ && cd - semble faire la même chose. Quelle version est plus portable, par exemple, seront pris en charge par un bash-sous-ensemble comme Android shell?

185voto

ignar Points 651

Si la commande précédente a échoué avec l' ; , la seconde va s'exécuter.

Mais avec && le second ne sera pas exécuté.

C'est un "paresseux" logique "ET" opérande entre les opérations.

56voto

jm666 Points 17312

Je suis à l'aide d' && car il y a longtemps à l'ordinateur à proximité:

root# pwd
/
root# cd /tnp/test; rm -rf *
cd: /tnp/test: No such file or directory
...
... and after a while ...
...   
^C

mais pas aidé... ;)

cd /prt/test && rm -rf * #est sûr... ;)

21voto

Pascal Cuoq Points 39606

En cmd1 && cmd2, cmd2 est exécuté seulement si cmd1 réussit (retourne 0).

En cmd1 ; cmd2, cmd2 est exécutée dans tous les cas.

Les deux constructions sont partie d'un shell conforme à POSIX.

9voto

Fredrik Pihl Points 20944

&& moyens d'exécuter la commande suivante si le précédent est sorti avec l'état 0. Pour le contraire, utilisez || c'est à dire à être exécutées si la commande précédente se termine avec un statut non égal à 0 ; s'exécute toujours.

Très utile lorsque vous avez besoin de prendre une action particulière en fonction de si la commande précédente terminée OK ou pas.

5voto

Dave Costa Points 25282

Commandes séparées par ; sont exécutées de manière séquentielle, indépendamment de leur état d'achèvement.

Avec &&, la deuxième commande n'est exécutée que si la première est terminée avec succès (renvoie un code de sortie de 0).

Ce qui est couvert dans la page de manuel de bash en vertu de l' Lists. Je m'attends à tout type Unix shell à l'appui de ces deux opérateurs, mais je ne sais pas spécifiquement sur l'Android shell.

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