Escopo de Variáveis e Variáveis Especiais
Nesta etapa final, exploraremos o escopo de variáveis no Bash e aprenderemos sobre variáveis especiais que o Bash fornece.
Compreendendo o Escopo de Variáveis
No Bash, as variáveis podem ter diferentes escopos, que determinam onde elas podem ser acessadas:
- Variáveis globais: São acessíveis em todo o script.
- Variáveis locais: São acessíveis apenas dentro de uma função ou bloco específico.
Vamos criar um script para demonstrar o escopo de variáveis:
- Crie um novo arquivo chamado
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"
- Salve o arquivo e torne-o executável:
chmod +x variable_scope.sh
- Execute o script:
./variable_scope.sh
Você deve ver uma saída semelhante 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 =
Observe que:
- A variável global
global_var é acessível dentro e fora da função.
- A variável local
local_var é acessível apenas dentro da função.
- As alterações na variável global persistem após o término da função.
Trabalhando com Variáveis Especiais
O Bash fornece várias variáveis especiais que contêm informações específicas. Vamos explorar algumas delas:
- Crie um novo arquivo chamado
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"
- Salve o arquivo e torne-o executável:
chmod +x special_variables.sh
- Execute o script com alguns argumentos:
./special_variables.sh arg1 arg2 arg3
Você deve ver uma saída semelhante 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
Variáveis de Ambiente
As variáveis de ambiente são variáveis especiais que afetam o comportamento do shell e dos programas. Vamos criar um script para explorá-las:
- Crie um novo arquivo chamado
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)"
- Salve o arquivo e torne-o executável:
chmod +x environment_variables.sh
- Execute o script:
./environment_variables.sh
Você deve ver uma saída mostrando várias variáveis de ambiente e demonstrando como elas podem ser criadas, acessadas e removidas.
Esta etapa mostrou como o escopo de variáveis funciona no Bash e apresentou variáveis especiais que fornecem informações úteis em seus scripts.