Alcance de las Variables y Variables Especiales
En este paso final, exploraremos el alcance de las variables en Bash y aprenderemos sobre las variables especiales que Bash proporciona.
Comprender el Alcance de las Variables
En Bash, las variables pueden tener diferentes alcances, que determinan dónde se puede acceder a ellas:
- Variables globales: Son accesibles en todo el script.
- Variables locales: Son accesibles solo dentro de una función o bloque específico.
Creemos un script para demostrar el alcance de las variables:
- Crea un nuevo archivo llamado
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"
- Guarda el archivo y hazlo ejecutable:
chmod +x variable_scope.sh
- Ejecuta el script:
./variable_scope.sh
Deberías ver una salida similar a:
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 =
Observa que:
- La variable global
global_var es accesible tanto dentro como fuera de la función.
- La variable local
local_var solo es accesible dentro de la función.
- Los cambios en la variable global persisten después de que la función termina.
Trabajando con Variables Especiales
Bash proporciona varias variables especiales que contienen información específica. Exploremos algunas de ellas:
- Crea un nuevo archivo llamado
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"
- Guarda el archivo y hazlo ejecutable:
chmod +x special_variables.sh
- Ejecuta el script con algunos argumentos:
./special_variables.sh arg1 arg2 arg3
Deberías ver una salida similar a:
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 de Entorno
Las variables de entorno son variables especiales que afectan el comportamiento del shell y los programas. Creemos un script para explorarlas:
- Crea un nuevo archivo llamado
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)"
- Guarda el archivo y hazlo ejecutable:
chmod +x environment_variables.sh
- Ejecuta el script:
./environment_variables.sh
Deberías ver una salida que muestra varias variables de entorno y demuestra cómo se pueden crear, acceder y eliminar.
Este paso te ha mostrado cómo funciona el alcance de las variables en Bash y te ha presentado las variables especiales que proporcionan información útil dentro de tus scripts.