Portée des Variables et Variables Spéciales
Dans cette dernière étape, nous allons explorer la portée des variables en Bash et découvrir les variables spéciales que Bash fournit.
Comprendre la Portée des Variables
En Bash, les variables peuvent avoir différentes portées, qui déterminent où elles peuvent être accessibles :
- Variables globales : Celles-ci sont accessibles dans tout le script.
- Variables locales : Celles-ci ne sont accessibles qu'à l'intérieur d'une fonction ou d'un bloc spécifique.
Créons un script pour démontrer la portée des variables :
- Créez un nouveau fichier nommé
variable_scope.sh
:
#!/bin/bash
## Global variable
global_var="I am a global variable"
## Function that demonstrates variable scope
demo_scope() {
## Local variable
local local_var="I am a local variable"
## Access global variable
echo "Inside function: global_var = $global_var"
## Access local variable
echo "Inside function: local_var = $local_var"
## Modify global variable
global_var="Global variable modified"
}
## Main script
echo "Before function call: global_var = $global_var"
## This will fail because local_var doesn't exist yet
echo "Before function call: local_var = $local_var"
## Call the function
demo_scope
## After function call
echo "After function call: global_var = $global_var"
## This will fail because local_var is only accessible within the function
echo "After function call: local_var = $local_var"
- Enregistrez le fichier et rendez-le exécutable :
chmod +x variable_scope.sh
- Exécutez le script :
./variable_scope.sh
Vous devriez voir une sortie similaire à :
Before function call: global_var = I am a global variable
Before function call: local_var =
Inside function: global_var = I am a global variable
Inside function: local_var = I am a local variable
After function call: global_var = Global variable modified
After function call: local_var =
Remarquez que :
- La variable globale
global_var
est accessible à l'intérieur et à l'extérieur de la fonction.
- La variable locale
local_var
n'est accessible qu'à l'intérieur de la fonction.
- Les modifications apportées à la variable globale persistent après la fin de la fonction.
Travailler avec des Variables Spéciales
Bash fournit plusieurs variables spéciales qui contiennent des informations spécifiques. Explorons-en quelques-unes :
- Créez un nouveau fichier nommé
special_variables.sh
:
#!/bin/bash
## Special variables demonstration
echo "Script name: $0"
echo "Process ID: $$"
echo "Number of arguments: $#"
echo "All arguments: $@"
echo "Exit status of last command: $?"
echo "Current user: $USER"
echo "Current hostname: $HOSTNAME"
echo "Random number: $RANDOM"
## Function to demonstrate positional parameters
show_params() {
echo "Function received $## parameters"
echo "Parameter 1: $1"
echo "Parameter 2: $2"
echo "Parameter 3: $3"
}
## Call the function with parameters
echo -e "\nCalling function with parameters:"
show_params apple banana cherry
## Demonstrate positional parameters to the script
echo -e "\nScript positional parameters:"
echo "Parameter 1: $1"
echo "Parameter 2: $2"
echo "Parameter 3: $3"
- Enregistrez le fichier et rendez-le exécutable :
chmod +x special_variables.sh
- Exécutez le script avec des arguments :
./special_variables.sh arg1 arg2 arg3
Vous devriez voir une sortie similaire à :
Script name: ./special_variables.sh
Process ID: 12345
Number of arguments: 3
All arguments: arg1 arg2 arg3
Exit status of last command: 0
Current user: labex
Current hostname: labex
Random number: 23456
Calling function with parameters:
Function received 3 parameters
Parameter 1: apple
Parameter 2: banana
Parameter 3: cherry
Script positional parameters:
Parameter 1: arg1
Parameter 2: arg2
Parameter 3: arg3
Variables d'Environnement
Les variables d'environnement sont des variables spéciales qui affectent le comportement du shell et des programmes. Créons un script pour les explorer :
- Créez un nouveau fichier nommé
environment_variables.sh
:
#!/bin/bash
## Display common environment variables
echo "HOME directory: $HOME"
echo "Current user: $USER"
echo "Shell: $SHELL"
echo "Path: $PATH"
echo "Current working directory: $PWD"
echo "Terminal: $TERM"
echo "Language: $LANG"
## Creating and exporting a new environment variable
echo -e "\nCreating a new environment variable:"
MY_VAR="Hello from environment variable"
export MY_VAR
echo "MY_VAR = $MY_VAR"
## Demonstrate that child processes inherit environment variables
echo -e "\nAccessing environment variable from a child process:"
bash -c 'echo "Child process sees MY_VAR = $MY_VAR"'
## Remove the environment variable
echo -e "\nRemoving the environment variable:"
unset MY_VAR
echo "MY_VAR = $MY_VAR (should be empty)"
- Enregistrez le fichier et rendez-le exécutable :
chmod +x environment_variables.sh
- Exécutez le script :
./environment_variables.sh
Vous devriez voir une sortie montrant diverses variables d'environnement et démontrant comment elles peuvent être créées, consultées et supprimées.
Cette étape vous a montré comment la portée des variables fonctionne en Bash et vous a présenté les variables spéciales qui fournissent des informations utiles dans vos scripts.