Question 1Quand cmd2 se lance-t-elle dans cmd1 && cmd2 ?
Enchaîner les commandes — ; && || et les guillemets
Apprends l'exécution séquentielle avec ;, l'exécution conditionnelle avec && (en cas de succès) et || (en cas d'échec), et la différence entre guillemets simples et doubles pour l'expansion des variables — tout en pratique dans un terminal en navigateur.
Enchaîner les commandes — ; && ||
Tu peux enchaîner plusieurs commandes sur une seule ligne.
; les lance l'une après l'autre, peu importe le résultat de la précédente.
&& ne lance la commande suivante que si la précédente a réussi, et || ne lance la suivante que si la précédente a échoué.
| Symbole | Lance la suivante quand | Exemple |
|---|---|---|
; | Toujours, peu importe le résultat | echo a ; echo b |
&& | Seulement si la précédente a réussi (code de sortie 0) | mkdir d && cd d |
|| | Seulement si la précédente a échoué (code non nul) | cat f || echo ng |
; lance toujours en séquence, && lance la suite en cas de succès, et || lance la suite en cas d'échec.echo step1 ; echo step2 # lance les deux dans l'ordre
mkdir build && echo created # created si ça réussit
ls missing.txt || echo not-found # not-found si ça échoue
Combiner && et || — brancher en ligne
Tu peux écrire && et || l'un après l'autre sur une ligne.
cmd && echo ok || echo ng lance echo ok si cmd réussit, et echo ng si elle échoue.
C'est la forme de référence quand tu veux écrire au même endroit l'action de succès et celle d'échec.
cmd && echo ok || echo ng affiche ok si cmd réussit, ou ng si elle échoue.mkdir out && echo created || echo failed # created en cas de succès
ls nofile.txt && echo found || echo none # none en cas d'échec
La différence entre les guillemets — ' et "
Il existe deux sortes de guillemets pour entourer une chaîne.
Les guillemets simples '...' traitent le contenu comme des caractères littéraux et ne remplacent pas $VAR.
Les guillemets doubles "..." étendent $VAR et $(...) à l'intérieur en leur valeur.
Ils servent aussi à passer comme un seul bloc une chaîne contenant des espaces.
| Guillemet | $VAR | $(...) | Exemple → sortie |
|---|---|---|---|
'...' (simples) | Non étendu (littéral) | Non étendu | echo '$name' → $name |
"..." (doubles) | Étendu à sa valeur | Étendu à la sortie de la commande | echo "$name" → Linux |
$variable à sa valeur.place=server
echo 'path is $place' # littéral : path is $place
echo "path is $place" # étendu : path is server
Intégrer variables et sortie de commande dans des guillemets doubles
À l'intérieur de guillemets doubles, tu peux construire une seule chaîne à partir de variables et de substitution de commande à la fois.
$(...) est remplacé par la sortie de la commande.
Par exemple, $(pwd) est remplacé par le chemin de ta position actuelle avant d'être affiché.
Entourer de guillemets doubles est aussi la façon de base pour passer comme un seul argument une valeur contenant des espaces.
Ce que sont vraiment succès et échec — code de sortie et echo $?
Le « succès ou échec » que && et || surveillent est déterminé par un nombre appelé code de sortie, que la commande laisse en se terminant.
0 signifie succès et tout ce qui est différent de 0 signifie échec.
Le code de sortie de la commande précédente va dans la variable spéciale $?, que tu peux consulter avec echo $?.
| Code de sortie | Signification | Vérification |
|---|---|---|
0 | La commande précédente a réussi | echo $? affiche 0 |
| non nul | La commande précédente a échoué | echo $? affiche 1, etc. |
echo $? vaut 0 ; juste après une qui échoue, il est non nul.ls . # une commande qui réussit
echo $? # code de sortie précédent -> 0
cat nofile.txt # une commande qui échoue
echo $? # code de sortie précédent -> non nul (ex. 1)
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Qu'affiche echo '$name' ? (en supposant que name=Linux est défini)
Question 3Quelle affirmation est correcte au sujet du rôle de || ?