Comment définir une variable avec ou sans exportation en bash

Comment définir une variable avec ou sans exportation en bash

Bash est un langage de script populaire utilisé pour automatiser les tâches et travailler avec l'interface de ligne de commande. L'une des principales caractéristiques de Bash est la possibilité de définir des variables, qui peuvent être utilisées pour stocker les valeurs et les transmettre entre différentes commandes ou scripts. Cependant, lors de la définition des variables dans Bash, il faut être clair sur la différence entre la définition d'une variable avec ou sans le mot-clé d'exportation.

Suivez les lignes directrices de cet article pour apprendre à définir une variable avec ou sans exportation en bash.

Définir une variable sans exportation en bash

La définition d'une variable sans exportation en fait une variable locale qui n'est accessible que dans la session ou le script de shell actuel, ce qui signifie que la variable ne peut pas être accessible par des processus enfants ou des scripts qui sont appelés à partir du script actuel. Les variables locales sont utiles lors du stockage des valeurs temporaires qui ne sont nécessaires que dans une partie spécifique d'un script, par exemple, disons que vous avez un script qui définit une variable appelée My_var sans exportation:

#!/ bac / bash
My_var = "Bonjour, Linux!"
echo $ my_var
./ child_script.shot


Dans ce cas, My_var est une variable locale et n'est accessible que dans le script actuel. Lorsque le script s'exécute, il imprime "Bonjour, Linux!" à la console, mais quand il appelle le script enfant (./ child_script.sh), le script enfant ne peut pas accéder à la valeur de My_var.


Dans l'image ci-dessus, on peut clairement voir que lorsque le script enfant est appelé, il ne parvient pas à accéder à la valeur de la variable et renvoie une ligne vide à la place de la sortie du fichier de script.

Définition d'une variable avec exportation en bash

D'un autre côté, définir une variable avec le mot-clé d'exportation en fait une variable d'environnement. Les variables d'environnement sont accessibles à tous les processus enfants qui sont engendrés à partir de la session ou du script actuel. Cela signifie que la variable peut être utilisée sur différents scripts ou commandes qui sont appelés à partir du script actuel, alors considérons le même script, mais avec My_var défini avec l'exportation:

#!/ bac / bash
exporter my_var = "Bonjour, Linux!"
echo $ my_var
./ child_script.shot


Dans ce cas, My_var est une variable d'environnement et est accessible à tous les processus enfants qui sont engendrés à partir de la session ou du script actuel. Lorsque le script s'exécute, il imprime "Bonjour, Linux!" à la console, et quand il appelle le script enfant ./ child_script.shot, Le script enfant peut accéder à la valeur de My_var.


Dans l'image ci-dessus, on peut clairement voir que lorsque le script enfant est appelé, il a accédé à la valeur variable et a renvoyé la valeur qui était «Bonjour, Linux".

Note: Ici, dans l'exemple de code, j'ai créé le script enfant qui appelle la variable dans le script principal, alors voici le code shell pour le script enfant: en outre, vous devez rendre le fichier de script exécutable à l'aide du "Chmod + x" commande afin que vous puissiez exécuter le script.

#!/ bac / bash
echo $ my_var

Conclusion

Lorsque vous travaillez avec des variables dans Bash, il est important de comprendre la portée de la variable. La définition d'une variable sans exportation en fait une variable locale qui n'est accessible que dans la session ou le script de shell actuel tout en définissant une variable avec exportation en fait une variable d'environnement accessible à tous les processus enfants qui sont engendrés à partir de la session ou du script actuel.