Область видимости переменных и специальные переменные
На этом заключительном шаге мы рассмотрим область видимости переменных в Bash и узнаем о специальных переменных, которые предоставляет Bash.
Понимание области видимости переменных
В Bash переменные могут иметь разные области видимости, которые определяют, где к ним можно получить доступ:
- Глобальные переменные (Global variables): Они доступны во всем скрипте.
- Локальные переменные (Local variables): Они доступны только внутри определенной функции или блока.
Давайте создадим скрипт для демонстрации области видимости переменных:
- Создайте новый файл с именем
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"
- Сохраните файл и сделайте его исполняемым:
chmod +x variable_scope.sh
- Запустите скрипт:
./variable_scope.sh
Вы должны увидеть вывод, похожий на:
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 =
Обратите внимание, что:
- Глобальная переменная
global_var доступна как внутри, так и за пределами функции.
- Локальная переменная
local_var доступна только внутри функции.
- Изменения глобальной переменной сохраняются после завершения функции.
Работа со специальными переменными
Bash предоставляет несколько специальных переменных, которые содержат определенную информацию. Давайте рассмотрим некоторые из них:
- Создайте новый файл с именем
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"
- Сохраните файл и сделайте его исполняемым:
chmod +x special_variables.sh
- Запустите скрипт с некоторыми аргументами:
./special_variables.sh arg1 arg2 arg3
Вы должны увидеть вывод, похожий на:
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
Переменные окружения
Переменные окружения (Environment variables) — это специальные переменные, которые влияют на поведение оболочки и программ. Давайте создадим скрипт для их изучения:
- Создайте новый файл с именем
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)"
- Сохраните файл и сделайте его исполняемым:
chmod +x environment_variables.sh
- Запустите скрипт:
./environment_variables.sh
Вы должны увидеть вывод, показывающий различные переменные окружения и демонстрирующий, как их можно создавать, получать доступ и удалять.
Этот шаг показал вам, как работает область видимости переменных в Bash, и познакомил вас со специальными переменными, которые предоставляют полезную информацию в ваших скриптах.