Quelle est la raison de l'utilisation de && au lieu de; placer des commandes sur la même ligne?

30

N'étant pas un expert de Linux, ni d’Unix, je me demande quelle est la différence entre ces deux méthodes pour enfiler deux commandes sur la même ligne? Je ne vois aucune différence dans les résultats dans cet exemple simpliste

Pete$date ; time
Sun Mar 17 19:37:20 EDT 2013

real    0m0.000s
user    0m0.000s
sys 0m0.000s

Pete$date &&time
Sun Mar 17 19:37:46 EDT 2013

real    0m0.000s
user    0m0.000s
sys 0m0.000s

Cela n’a pas posé de problème - je suis juste curieux ..

    
posée pfeiffep 18.03.2013 - 00:41
la source

2 réponses

43

&& est un "et" logique. Le premier argument est évalué et le second est évalué uniquement si le premier renvoie true. La raison en est que "false AND quelquechose" est toujours faux, donc pas besoin d’évaluer le second argument dans ce cas.

Donc, en utilisant && , vous vous assurez que la deuxième commande n'est pas exécutée si le premier signale une erreur ( true est représenté par le code de sortie 0 , ce qui indique l'absence d'erreur). En revanche, ; exécute les deux commandes, quel que soit le résultat du premier.

Conclusion: Le chaînage des commandes avec && est une bonne habitude. Contrairement à ; , il n'exécutera pas les commandes suivantes si quelque chose ne va pas.

    
réponse donnée azimut 18.03.2013 - 00:44
la source
26

;

Exécute séquentiellement les commandes, quel que soit le statut de sortie précédent:

# sh -c "exit 0" ; echo "2nd command"
2nd command
# sh -c "exit 1" ; echo "2nd command"
2nd command

& amp; & amp;

Logique ET

Exécutez la commande suivante, mais uniquement si la commande précédente a réussi (le statut de sortie était 0 ):

# sh -c "exit 0" && echo "2nd command"
2nd command
# sh -c "exit 1" && echo "2nd command"
#

||

OU logique

Exécutez la commande suivante, mais uniquement si la commande précédente a échoué (le statut de sortie était non 0 ):

# sh -c "exit 0" || echo "2nd command"
#
# sh -c "exit 1" || echo "2nd command"
2nd command
    
réponse donnée phoibos 18.03.2013 - 12:22
la source

Lire d'autres questions sur les étiquettes