GNU/Linux >> Tutoriels Linux >  >> Linux

bash :définir la variable d'environnement de tableau et la déréférencer à partir de n'importe quel script shell échoue

Lisez bien le manuel, section "bugs".

Les variables de tableau ne peuvent pas (encore) être exportées.

Cependant, je ne sais pas si beaucoup considèrent cela comme un véritable bug. Les autres shells prenant en charge les tableaux de style ksh ne permettent pas non plus de les exporter.

Vous pouvez passer des définitions de tableau assez facilement, via des paramètres ou des variables ou l'environnement. Cependant, ce n'est généralement pas très utile.

function f {
    unset -v "$2"
    typeset "$2"
    eval "${!1}"
    typeset -p "$2"
}

typeset -a a=(a b c)
myArr=$(typeset -p a) f myArr a

Le malentendu est de penser que les variables d'environnement ne sont utilisées que par les shells - elles ne le sont pas. Aucun attribut, y compris en lecture seule, entier et tableaux, ne peut être exporté dans le bloc d'environnement. Les variables d'environnement peuvent être lues par n'importe quel langage, C, C++, Perl, Java, Python, PHP, etc. Ils existent aussi sous Windows.

Alors, comment un autre langage pourrait-il prendre en charge des attributs spécifiques à Bash ? Toutes les variables d'environnement sont converties en chaînes, sauf dans Bash où les valeurs de tableau ne sont pas du tout exportées.

Le shell Korn n'exportera que le premier élément. ksh93 fait aussi du exec exploitation pour préserver les attributs de variables exportés vers les enfants du shell Korn.

Soit dit en passant, il est considéré comme une mauvaise pratique d'utiliser des MAJUSCULES pour les noms de variables, car ils pourraient entrer en collision avec ceux utilisés par le shell. De plus, sur Bash 3, le nom STRING a des problèmes lors de l'exportation (corrigé dans Bash 4).


Linux
  1. Comment puis-je ftp et télécharger des fichiers à partir d'un script shell UNIX

  2. Formater la date et l'heure pour le script ou la variable du shell Linux

  3. Abandon d'un script shell si une commande renvoie une valeur différente de zéro

  4. Script bash :utilisation de la commande de script d'un script bash pour la journalisation d'une session

  5. Ouvrir Vim depuis un script shell Bash

Différence entre les variables Shell qui sont exportées et celles qui ne sont pas dans Bash ?

Comment créer un tableau d'éléments uniques à partir d'une chaîne/tableau dans Bash ?

Script Shell avec fonction et paramètre comme variables ?

Bash Beginner Series #2 :Comprendre les variables dans les scripts shell Bash

Tutoriel sur les variables Bash - 6 exemples pratiques de variables globales et locales Bash

Exporter une variable de bash et l'utiliser en Python