Si je voulais exécuter deux commandes distinctes sur une ligne, je pouvais le faire:
cd /home; ls -al
ou ca:
cd /home && ls -al
Et j'obtiens les mêmes résultats. Cependant, que se passe-t-il en arrière-plan avec ces deux méthodes? Quelle est la différence fonctionnelle entre eux?
;
est très dangereux (au moins avec la commande rm), par exemplecd /some/dir; rm -fr ./*
. Donc, avec une telle opération destructive, vous devez être sûr d’être au bon endroit avant d’exécuter rm. La bonne commande estcd /some/dir && rm -fr ./*
si a renvoie zéro code de sortie, alors b est exécuté.
si a renvoie un code de sortie non nul, b est exécuté.
a est exécuté puis b est exécuté.
la source
S'exécute
ls
dans le répertoire en cours carcd /fakedir
échouera et le shell ignorera le statut de sortie différent de zéro.Etant donné que l'
&&
opérateur continuera uniquement si la commande précédente s'est terminée normalement (statut égal à zéro), aucunels
opération ne sera effectuée.Il existe d'autres opérateurs, tels que ceux
&
qui fondent un processus. Bien que souvent placé à la fin d'une commande, il peut être placé au milieu d'une chaîne.la source
Vous pouvez également les associer comme une
if..then..else
logique de commande d'enchaînement.exemple:
la source