GNU/Linux >> Tutoriels Linux >  >> Linux

'&&' vs '&' avec la commande 'test' dans Bash

& exécute une commande en arrière-plan et renverra 0 quel que soit son statut.

À partir de la page de manuel :

Si une commande est terminée par l'opérateur de contrôle &, le shell exécute la commande en arrière-plan dans un sous-shell. Le shell n'attend pas que la commande se termine et l'état de retour est 0. Commandes séparées par un; sont exécutés séquentiellement ; le shell attend que chaque commande se termine à son tour. L'état de retour est l'état de sortie de la dernière commande exécutée.


Regardez quelles sont vos commandes :

test -x examples.desktop  && echo $?

Cela signifie vérifier si examples.desktop est exécutable et si c'est le cas, exécutez echo $? .

test -x examples.desktop  & echo $?

signifie vérifier si examples.desktop est exécutable en "arrière-plan". Puis exécutez echo $? .


La signification de && et & sont intrinsèquement différents.

  • Qu'est-ce que && ? dans Bash ? Dans Bash—et de nombreux autres langages de programmation—&& signifie « ET ». Et dans un contexte d'exécution de commande comme celui-ci, cela signifie des éléments à gauche ainsi qu'à droite de && doivent être exécutés dans l'ordre dans ce cas.
  • Qu'est-ce que & dans Bash ? Et un seul & signifie que les commandes précédentes—immédiatement à gauche du & — doit simplement être exécuté en arrière-plan.

Donc, en regardant votre exemple :

[email protected]:~$ test -x examples.desktop  && echo $?
[email protected]:~$ test -x examples.desktop  & echo $?
[1] 2992
0

La première commande, telle qu'elle est structurée, ne renvoie en fait rien. Mais la deuxième commande renvoie un [1] 2992 dans lequel le 2992 fait référence à l'ID de processus (PID) qui s'exécute en arrière-plan et au 0 est la sortie de la première commande.

Étant donné que la deuxième commande exécute simplement test -x examples.desktop en arrière-plan, cela se produit assez rapidement, de sorte que l'ID de processus est généré et disparaît assez immédiatement.


Linux
  1. Commande Bash wait avec exemples

  2. Commande Linux wc avec exemples

  3. Commande Nohup avec exemples

  4. Commande JQ sous Linux avec exemples

  5. Le tutoriel Ultimate Bash Array avec 15 exemples

Commande Linux make expliquée avec des exemples

Utilisation de la commande GREP sous Linux avec des exemples

Le didacticiel de commande fc avec des exemples pour les débutants

La commande Bash Echo expliquée avec des exemples sous Linux

Bash Scripting - Commande Printf expliquée avec des exemples

Commande d'historique avec exemples