По традиции напишем первый сценарий, выводящий всем известную фразу: «Привет, мир!» (Hello world!). Вся работа со сценариями выполняется обычно в консоли (или в терминале), но для редактирования сценариев вы можете использовать любимый графический редактор, например, kedit (листинг 22.2).
Листинг 22.2. Первый сценарий
#!/bin/bash
echo "Привет, мир!"
Первая строка нашего сценария — это указание, что он должен быть обработан программой /bin/bash. Обратите внимание — если между # и ! окажется пробел, то данная директива не сработает, поскольку будет воспринята как обычный комментарий. Комментарии начинаются, как вы уже догадались, с решетки:
# Комментарий
Вторая строка — это оператор echo , выводящий нашу строку. Сохраните сценарий под именем hello и введите команду:
$ chmod +x hello
Для запуска сценария введите команду:
./hello
На экране вы увидите строку:
Привет, мир!
Чтобы вводить для запуска сценария просто hello (без ./ ), сценарий нужно скопировать в каталог /usr/bin (точнее, в любой каталог из переменной окружения PATH ):
# cp./hello /usr/bin
22.4. Использование переменных в собственных сценариях
В любом серьезном сценарии вы не обойдетесь без использования переменных. Переменные можно объявлять в любом месте сценария, но до места их первого применения. Рекомендуется объявлять переменные в самом начале сценария, чтобы потом не искать, где вы объявили ту или иную переменную.
Для объявления переменной используется следующая конструкция:
переменная=значение
Пример объявления переменной:
ADDRESS= www.dkws.org.ua
echo $ADDRESS
Обратите внимание на следующие моменты:
□ при объявлении переменной знак доллара не ставится, но он обязателен при использовании переменной;
□ при объявлении переменной не должно быть пробелов до и после знака =.
Значение для переменной указывать вручную не обязательно — его можно прочитать с клавиатуры:
read ADDRESS
или со стандартного вывода программы:
ADDRESS='hostname'
Чтение значения переменной с клавиатуры осуществляется с помощью инструкции read . При этом указывать символ доллара не нужно. Вторая команда устанавливает в качестве значения переменной ADDRESS вывод команды hostname .
В Linux часто используются переменные окружения. Это специальные переменные, содержащие служебные данные. Вот примеры некоторых часто используемых переменных окружения:
□ HOME — домашний каталог пользователя, который запустил сценарий;
□ RANDOM — случайное число в диапазоне от 0 до 32 767;
□ UID — ID пользователя, который запустил сценарий;
□ PWD — текущий каталог.
Для установки собственной переменной окружения используется команда export :
# присваиваем переменной значение
$ADDRESS= www.dkws.org.ua
# экспортируем переменную — делаем ее переменной окружения
# после этого переменная ADDRESS будет доступна в других сценариях export $ADDRESS
22.5. Передача параметров сценарию
Очень часто сценариям нужно передавать различные параметры, например, режим работы или имя файла/каталога. Для передачи параметров используются следующие специальные переменные:
□ $0 — содержит имя сценария;
□ $n — содержит значение параметра ( n — номер параметра);
□ $# — позволяет узнать количество параметров, которые были переданы.
Рассмотрим небольшой пример обработки параметров сценария. Я понимаю, что конструкцию case-esac мы еще не рассматривали, но общий принцип должен быть понятен (листинг 22.3).
Думаю, приведенных комментариев достаточно, поэтому подробно рассматривать работу сценария из листинга 22.2 не будем.
Интерпретатор bash позволяет использовать массивы. Массивы объявляются подобно переменным. Вот пример объявления массива:
ARRAY[0]=1
ARRAY[1]=2
echo $ARRAY[0]
Как и в любом языке программирования, в bash можно использовать циклы. Мы рассмотрим циклы for и while , хотя вообще в bash доступны также циклы until и select , но они применяются довольно редко.
Синтаксис цикла for выглядит так:
for переменная in список do
команды
done
В цикле при каждой итерации переменной будет присвоен очередной элемент списка, над которым будут выполнены указанные команды. Чтобы было понятнее, рассмотрим небольшой пример:
Читать дальше
Конец ознакомительного отрывка
Купить книгу