Scripts : tests et conditions
if, elif, else et fi, la commande test et sa forme [ ], les tests de fichiers, de chaînes et de nombres, les opérateurs &&, || et !, et case : choisir la branche qu'un script exécute et repérer un test mal écrit.
- 27 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
Commande test : de quoi s'agit-il ?
Voir la réponse
Commande qui évalue une condition sans rien afficher et répond par son code de retour : 0 si elle est vraie, 1 si elle est fausse. Elle s'écrit aussi entre crochets.
[est une vraie commande : les espaces autour des crochets sont obligatoires, et[-f x ]donne[-f: command not found.Ce script est lancé par
./age.sh 18. Qu'affiche-t-il ?
```bash
age=$1
if [ "$age" -gt 18 ]; then
echo majeur
elif [ "$age" -ge 12 ]; then
echo ado
else
echo enfant
fi`adomajeurenfantadopuisenfant
Voir la réponse
ado-gtest strict : 18 n'est pas supérieur à 18, la première branche est écartée.-ge 12est vrai, et seule cette branche s'exécute.Une structure
ifse poursuit par … après la condition et se termine par … ; la branche facultativeelsese place avant ce dernier mot.Voir la réponse
Une structure
ifse poursuit par then après la condition et se termine par fi ; la branche facultativeelsese place avant ce dernier mot.fiestiflu à l'envers, commeesacpourcase.Structure if : de quoi s'agit-il ?
Voir la réponse
Instruction qui essaie ses conditions dans l'ordre et exécute seulement la première branche dont la commande de condition rend le code 0, ou sinon sa branche par défaut si elle en a une.
Le test n'est pas un booléen mais une commande quelconque :
if grep -q motif f; thenfonctionne sans aucun crochet.Le script de sauvegarde ne doit continuer que si le fichier
$1existe et si on lui a donné exactement 2 arguments. Quel test convient ?[ -f "$1" ] || [ $# -eq 2 ][ -f "$1" ] && [ $# -ge 2 ][ -d "$1" ] && [ $# -eq 2 ][ -f "$1" ] && [ $# -eq 2 ]
Voir la réponse
[ -f "$1" ] && [ $# -eq 2 ]Deux conditions à satisfaire ensemble se relient par
&&;||accepterait l'une sans l'autre.-fvérifie le fichier ordinaire (-dexigerait un répertoire) et-eq 2demande exactement deux arguments, là où-ge 2en accepterait trois.