Найти тему
ИТ разнообразно

Написание shell-скриптов (продолжение): переменные и их область видимости (День 9)

Оглавление

Изучаем DevOps 120 дней с нуля

Переменные Bash обеспечивают временное хранение информации. Вы можете использовать их для хранения слов/фраз (строк), десятичных или целых чисел.

Переменные

Для присвоения значения переменной мы используем символ "=".

Примечание:

  • Когда вы присваиваете значение переменной, по обе стороны от символа "=" не должно быть пробелов.
  • Когда мы хотим получить доступ к переменной, нам нужно использовать символ $ для ссылки на неё.
name="Kenneth"
echo $name

Давайте добавим переменные в скрипт bash.

#!/usr/bin/bash
name="Kenneth"
greeting="Good Evening"
echo "${greeting} ${name}"

$ ./class.sh
Good Evening Kenneth

Поскольку наши переменные могут содержать пробелы, которые интерпретируются оболочкой bash, хорошей практикой является обернуть имя переменной в фигурные скобки и заключить его в двойные кавычки, так же, как мы показали выше.

В оболочке Bash, если вы попытаетесь получить доступ к переменной, которая не существует, вы не увидите ошибку, а только пустое значение. Например:

#!/usr/bin/bash
var2="456"
echo "variable 1 value: ${var1}"
echo "variable 2 value: ${var2}"

$ ./class.sh
variable 1 value:
variable 2 value: 456

Вы можете видеть, что значение переменной 1 осталось пустым, потому что переменная не была объявлена.

Область видимости переменных

Существует два типа переменных:

  • Локальные переменные
  • Глобальные переменные

Локальные переменные

Локальные переменные доступны только в том разделе кода, в котором они объявлены. Например, если мы объявим переменную внутри нашего сценария Bash, она не будет доступна за пределами этого сценария. Используя пример, который мы использовали ранее, попробуем вызвать var2 вне скрипта, прямо в нашем терминале.

$ echo "variable 2 value: ${var2}
variable 2 value:

Вы можете видеть, что после вызова var2 непосредственно в терминале он дал нам пустой результат, и это связано с тем, что область действия нашей переменной была ограничена самим скриптом, и её значение недоступно за пределами этого скрипта.

Глобальные переменные

Вы можете создавать свои собственные глобальные переменные с помощью команды export. Сначала давайте объявим переменную непосредственно в нашем терминале:

$my_Name="Kenneth"

Далее, давайте создадим скрипт, который пытается получить доступ к этой переменной:

#!/usr/bin/bash
echo "My name is: ${my_Name}"

Если мы запустим этот скрипт, мы получим пустой результат. Созданная переменная была локальной и, следовательно, недоступна внутри нашего скрипта.

$ ./class.sh
My name is:

Однако, если мы используем команду export, мы можем объявить MY_NAME как глобальную переменную, которая будет доступна в нашем скрипте, и при его выполнении у нас будет значение, присвоенное этой переменной.

Вот так:

$ export MY_NAME="Kenneth"

Изменим содержимое скрипта таким образом:

#!/usr/bin/bash
echo "My name is: ${MY_NAME}"

Запустим наш скрипт:

$ ./class.sh
My name is: Kenneth

Это всё для 9-го дня. Пришло время больше практиковаться в этом. Увидимся завтра на 10-м дне.

Перевод с некоторыми авторскими правками.

Автор оригинала: Kenneth Aigbuza.