Scripts : les codes de retour
$?, 0 pour le succès, exit n, les codes conventionnels (1, 2, 126, 127, 128 plus le numéro du signal), les enchaînements &&, || et ;, et le code d'un tube : prévoir ce qu'affiche une ligne et ne plus annoncer de faux succès.
- 24 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Code de retour : de quoi s'agit-il ?
Voir la réponse
Nombre de 0 à 255 que rend une commande en se terminant : 0 signale le succès, toute autre valeur un échec.
C'est l'inverse d'un booléen de langage : en shell, 0 est « vrai » pour
ifet&&, et toute valeur non nulle est « faux ».Qu'affiche cette ligne ?
```bash
false && echo A || echo B ; echo $?`Bpuis0Apuis0Bpuis1A,Bpuis0
Voir la réponse
Bpuis0falseéchoue, doncecho Aest ignoré et||lanceecho B.$?est le code de ce dernierecho, qui réussit : 0.Une commande introuvable rend le code … ; une commande trouvée mais sans droit d'exécution rend ….
Voir la réponse
Une commande introuvable rend le code 127 ; une commande trouvée mais sans droit d'exécution rend 126.
nom: command not foundaccompagne 127,Permission deniedaccompagne 126 lors d'un lancement direct.Variable $? : de quoi s'agit-il ?
Voir la réponse
Variable spéciale qui contient le code rendu par la dernière commande terminée, et que la commande suivante remplace aussitôt.
Après
grep -q x f; echo $?, on lit le code degrep. Mais après unechointermédiaire,$?vaut 0, le code deecho: il faut le copier tout de suite.Pour une sauvegarde, on veut supprimer l'original seulement si la copie a réussi. Quelle ligne convient ?
cp f /sauvegarde/ ; rm fcp f /sauvegarde/ || rm fcp f /sauvegarde/ && rm fcp f /sauvegarde/ | rm f
Voir la réponse
cp f /sauvegarde/ && rm f&&n'enchaîne qu'après un succès. Avec;, l'original disparaît même si la copie échoue ; avec||, il disparaît seulement si elle échoue ; un tube lance les deux en parallèle.