55 votes

Quelle est la différence entre "commande && commande" et "commande ; commande" ?

Je vois ces deux utilisations sur Ubuntu "command && command" et "command ; command",
par exemple apt-get update && apt-get upgrade

Quelle serait la différence si j'utilisais apt-get update; apt-get upgrade ?
Je ne demande pas cet usage spécifique mais, en général, quelle est la différence entre ces deux usages ?

94voto

Dustin Laine Points 22815

&& est un opérateur logique. ; est un simple séquençage.

En cmd1 && cmd2 cmd2 ne sera exécuté que si cmd1 se termine avec un code de retour réussi.

Considérant que dans cmd1; cmd2 cmd2 s'exécutera quel que soit l'état de sortie de cmd1 (en supposant que vous n'avez pas configuré votre Shell pour sortir sur tout échec dans votre Shell ou autre).

Sur une note connexe, avec cmd1 || cmd2 en utilisant le || Opérateur logique 'OR', cmd2 ne sera exécuté que si cmd1 échoue (renvoie un code de sortie non nul).

Ces opérateurs logiques sont parfois utilisés dans les scripts à la place d'une instruction if de base. Par exemple,

if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi

...peut être réalisé de manière plus concise avec :

[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"

35voto

stderr Points 10006

Syntaxe

command1 && command2

commande2 est exécuté si, et seulement si, command1 renvoie un état de sortie de zéro ( vrai ). En d'autres termes, exécuter command1 et s'il est réussi, alors exécutez command2 .

command1 ; command2

Les deux sites commande1 y commande2 sera exécuté quoi qu'il en soit. Le point-virgule vous permet de saisir plusieurs commandes sur une seule ligne.

Related :

command1 || command2

commande2 est exécuté si, et seulement si, commande1 renvoie un état de sortie non nul. En d'autres termes, l'exécution de command1 avec succès ou exécuter command2 .


&& opérateur :

$ rm /tmp/filename && echo "File deleted"

; opérateur :

$ echo "foo" ; echo "bar"

|| opérateur :

$ cat /tmp/filename 2>/dev/null || echo "Failed to open file"

Liens externes

  1. Linuxtopia.org
  2. Tldp.org

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X