Bases de Linux et de la ligne de commande

$ false && echo A || echo B
$ true || echo C; echo D

Si l'on exécute les deux lignes ci-dessus dans un shell, quels caractères s'affichent ?

  1. ASeulement D
  2. BB et D
  3. CB, C et D
Afficher la réponse et l'explication

Réponse : B. B et D

Chaque commande renvoie en se terminant un code de retour : 0 signifie la réussite, et toute autre valeur l'échec (la dernière valeur se lit avec $?). « A && B » n'exécute B que si A réussit, « A || B » n'exécute B que si A échoue, et « ; » exécute la commande suivante quel que soit le résultat. Sur la première ligne, false échoue : echo A est donc sauté, l'ensemble « false && echo A » est traité comme un échec et le echo B qui suit || est exécuté. Sur la deuxième ligne, true réussit, donc echo C n'est pas exécuté, tandis que le echo D qui suit « ; » s'exécute toujours : B et D s'affichent.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de Linux et de la ligne de commande

  1. Si l'on exécute dans l'ordre les commandes ci-dessus, quelle est la sortie des deux commandes echo ?
  2. Comme ci-dessus, on exécute le script s.sh avec des arguments. Quelle est la sortie ?
  3. Dans un script shell, dans quel cas la condition du if ci-dessus est-elle vraie ?
  4. Quels fichiers se trouvent dans le répertoire après la session ci-dessus ?
  5. Le script exécutable run.sh, situé dans le répertoire courant, donne « command not found » quand on le lance en tapant « run.sh », mais s'exécute quand on tape « ./run.sh ». Quelle en est la raison ?