Référence de nom
Référence de nom (en anglais nameref) : variable créée par declare -n ou local -n, qui contient le nom d'une autre variable ; toute lecture, affectation ou unset portant sur la référence s'applique à la variable désignée. Introduites dans Bash 4.3, elles permettent à une fonction de remplir une variable choisie par l'appelant, ou de recevoir un tableau, sans sous-shell ni eval : remplir() { local -n _sortie=$1; _sortie=(a b c); }.
Le piège tient à la portée dynamique : si l'appelant passe le nom d'une variable qui porte le même nom qu'une variable locale de la fonction, la référence désigne la variable locale et le résultat se perd. On préfixe donc les noms des références et des variables locales des fonctions de bibliothèque (_sortie, __n), et l'on valide le nom reçu.
Dans les cours
- Bash pour l'automatisation, leçon 6 : Fonctions et portée
- Bash pour l'automatisation, leçon 7 : Tableaux indexés et associatifs