Функции

We use cookies. Read the Privacy and Cookie Policy

Функции

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

#!/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 не сможет создать новых пользователей. Надеюсь, этот пример (хоть он и краток) показывает положительный эффект от использования функций.