Bash : fonctions et tableaux
Déclarer et appeler une fonction, la portée de ses variables avec local, return contre echo, les tableaux indexés et associatifs et la lecture des options avec getopts : prévoir ce qu'affiche un script.
- 32 cartes
- 5 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
- Comprendre
Quelques cartes du deck
Fonction Bash : de quoi s'agit-il ?
Voir la réponse
Suite de commandes nommée, déclarée avec
nom() { … }, qui reçoit ses arguments dans$1,$2,$#et$@et s'appelle comme une commande.Les paramètres de la fonction masquent ceux du script le temps de l'appel :
$1dans la fonction n'est pas le$1du script.Qu'affiche ce script ?
```bash
f() { local x=2; y=3; }
x=1; y=1
f
echo $x $y`1 32 31 12 1
Voir la réponse
1 3xest locale : l'appel ne touche pas lexdu script, qui reste à 1.yest affectée sanslocal, donc globale : elle passe à 3.Dans une fonction Bash, le mot-clé … limite une variable à la durée de l'appel ; sans lui, l'affectation est ….
Voir la réponse
Dans une fonction Bash, le mot-clé local limite une variable à la durée de l'appel ; sans lui, l'affectation est globale.
f() { local x=2; y=3; }: après l'appel,xgarde sa valeur d'avant etyvaut 3.Variable locale : de quoi s'agit-il ?
Voir la réponse
Variable déclarée avec
localdans une fonction : elle n'existe que pendant l'appel et ne touche pas une variable de même nom ailleurs.Sans
local, toute affectation dans une fonction est globale : elle écrase la variable du script appelant, par exemple un compteur de bouclei.Une fonction qui devait rendre le nom d'un fichier se termine par
return $nom. L'exécution affichereturn: rapport.txt: numeric argument required. Quelle correction est juste ?- Écrire
return "$nom"entre guillemets - Écrire
echo "$nom"et capter avecf=$(nom_fichier) - Déclarer la variable
nomaveclocalavant lereturn - Écrire
return 0à la place, puis lire$?
Voir la réponse
Écrire
echo "$nom"et capter avecf=$(nom_fichier)returnn'accepte qu'un nombre : les guillemets n'y changent rien,localnon plus.return 0perdrait le nom. La sortie de la fonction est le bon canal pour un texte.- Écrire