Функции

Функции

Использование функций делает сопровождение своих скриптов проще. Проще говоря, это хороший способ разделить программу на более мелкие куски. Функция выполняет определенное действие и может возвращать то значение, какое вы пожелаете. Прежде чем продолжать, я приведу пример скрипта, написанного с использованием функции:

#!/bin/bash

# функция hello() печатает сообщение

hello(){

echo "Вы находитесь в функции hello()"

}

echo "Вызываем функцию hello()…"

hello

Попробуйте запустить код из примера выше. Функция hello() в нем имеет только одно предназначение — просто напечатать сообщение. Но, конечно же, они могут решать и более сложные задачи. Выше мы вызвали функцию hello(), используя строку:

hello

Когда запускается эта строка, bash ищет скрипт для строки hello(). Он находит его в начале файла и выполняет его содержимое. Функции всегда вызываются по своему имени, что мы и видели выше. При написании функции вы можете обьявить ее, просто указав имя_функции (), как это сделано выше, или если вы хотите сделать ее объявление более явным, можете объявить ее так: function имя_функции(). Ниже представлен альтернативный способ написания функции hello()

function hello() {

echo "Вы находитесь в функции hello()"

}

После имени функции должны следовать пустые открывающая и закрывающая скобки: "()", за ними следует пара фигурных скобок: «{…}», содержащих тело функции. Другими словами, весь код функции заключен в эти фигурные скобки. Функции всегда должны быть предварительно объявлены до своего вызова. Давайте попробуем в приведенном выше примере вызвать функцию до ее объявления:

#!/bin/bash

echo "Вызов функции hello() …"

hello

echo "Вы вне функции hello()"

# функция hello() просто выводит сообщение

hello(){

echo "Вы находитесь в функции hello()"

}

Вот что мы получим, когда попытаемся запустить этот скрипт:

$ ./hello.sh

Вызов функции hello() ...

./hello.sh: hello: command not found

Вы вне функции hello()

Как видите, мы получили сообщение об ошибке. Поэтому стоит всегда размещать ваши функции в начале кода или, по крайней мере, непосредственно перед вызовом функции.

Еще один пример использования функции:

#!/bin/bash

# admin.sh – инструмент для администратора

# функция new_user () создает новую учетную запись пользователя

new_user(){

echo "Подготовка к созданию новых пользователей ..."

sleep 2

# запускаем программу adduser adduser

}

echo "1. Добавить пользователя"

echo "2. Выход"

echo "Укажите, что вы хотите сделать:"

read choice

case $choice in

1) new_user # вызов функции new_user()

;;

*) exit

;;

esac

Для того чтобы приведенный скрипт работал правильно, вам необходимо запустить его из-под пользователя root, т. к. иначе программа adduser не сможет создать новых пользователей. Надеюсь, этот пример (хоть он и краток) показывает положительный эффект от использования функций.