
- •Список сокращений
- •Введение
- •Автоматизация работы в командной строке
- •Применение автоматизации
- •Особенности командных оболочек
- •Основы разработки скриптов
- •Создание простого скрипта
- •Переменные
- •Работа с потоками ввода-вывода
- •Расширенные возможности разработки скриптов
- •Массивы
- •Математические операции
- •Условный оператор if
- •Оператор выбора case
- •Функции
- •Система контроля версий git
- •Упражнения
- •Индивидуальные задания
- •Контрольные вопросы
- •Список литературы
Переменные
Командная оболочка bash поддерживает использование переменных для хранения информации. Их можно разделить на два типа:
переменные среды;
пользовательские переменные.
Переменные среды – это набор переменных, определенных ОС, при исполнении скрипта они будут заменены на системную информацию. Например, команда
|
|
echo "Home for the current user is: $HOME" |
|
|
|
выведет на экран сообщение, указанное в кавычках, но при этом заменит «$HOME» на строку, определенную в этой переменной. Для того, чтобы узнать тип используемого интерпретатора, считывалось значение из системной переменной «$SHELL» (см. п. 1.2). Все доступные системные переменные можно посмотреть с помощью команды
|
env |
|
Пользовательские переменные могут объявляться, инициализироваться и использоваться как в командной оболочке, так и внутри файла скрипта.
Объявление переменных осуществляется с помощью встроенной команды «declare»:
|
declare -r var1 # переменная var1 доступна только для чтения (readonly) declare -i var1 # переменная var1 будет иметь целочисленный тип (integer) |
|
Однако объявление не является обязательным. Переменная может быть объявлена и инициализирована одновременно. При этом чтение необъявленных и неинициализированных (несуществующих) переменных не вызовет ошибку во время исполнения скрипта.
В Листинге Листинг 3 приведен пример работы с переменными с именами «grade» и «person».
Листинг 3. Пример скрипта с использованием переменных
-
-
1.
2.
3.
4.
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy; he is in grade $grade"
-
В строках 3 и 4 производится инициализация переменных. Пробелы при инициализации до и после знака «=» должны отсутствовать. В строке 5 скрипта выводится строка, содержащая значения переменных. Для каждого использования значения переменной обязательно указание знака «$» перед ее именем. При этом несмотря на то, что переменная grade инициализирована числом, командная оболочка при выводе будет автоматически интерпретировать ее как строку (Рисунок Рисунок 3).
Рисунок 3. Пример вызова скрипта с переменными
Пользовательские переменные также могут перехватывать результат вывода команд в стандартный поток stdout. Для этого существует два способа:
обрамление команды специальным символом «`» (обратный апостроф), например
mydir=`pwd`
или использование конструкции «$()», например
mydir=$(pwd)
После любого из способов в переменной mydir будет храниться значение, возвращаемое программой «pwd».
При запуске скрипта ОС самостоятельно создает ряд переменных для оперирования аргументами, которые могут быть переданы при запуске. Переменная с именем «$0» содержит имя скрипта, переменные «$0», «$1», …, «$9» содержат аргументы, а в переменной «$#» содержится количество аргументов, которые были фактически переданы при вызове. Пример модифицированного скрипта из Листинга Листинг 3 и результат его вывода представлены в Листинге Листинг 4 и на Рисунке Рисунок 4 соответственно.
Листинг 4. Пример скрипта с использованием входных аргументов
-
-
1.
2.
3.
4.
5.
6.
#!/bin/bash
# testing variables
echo "script name: $0"
person=$1
grade=$2
echo "$person is a good boy; he is in grade $grade"
-
Рисунок 4. Пример вызова скрипта с входными аргументами