Функции. Написание хорошо структурированных программ требует возможности соз- дания подпрограмм

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

 

Пример 10.42. Синтаксис функции

 

function имя()

{

команды

}

 

Код функции описывают в начале сценария до первого вызова функции. Для вызова функции достаточно просто указать ее имя.

Для демонстрации использования функций оболочки модифицируем про- грамму if.sh (см. примеры 10.27, 10.29, 10.31). Измененный код сценария if.sh представлен в примере 10.43, а результат его работы — в примере 10.44.

 

Пример 10.43. Использование функций

 

#!/bin/bash function err_msg()

{

cat <<- ERR

Недостаточно аргументов. Использование: if.sh file

Аргумент file должен быть обычным файлом.

ERR

}


 

if [ $# -ne 1 ] then

err_msg exit 1

elif [ ! -f $1 ] then


 

 

fi

ls -l $1


echo -n 'Тип файла ' file $1

exit 1


 

Пример 10.44. Проверка работы функции в Bash

 

$ ./if.sh

Недостаточно аргументов. Использование: if.sh file

Аргумент file должен быть обычным файлом.

$ ./if.sh /etc/passwd

-rw-r--r-- 1 root root 2033 Oct 19 23:24 /etc/passwd

 

Для передачи аргументов в функцию их указывают после имени функции, разделяя пробелами. В теле функции обращение к переданным аргументам производится с помощью позиционных параметров.

Модификация if.sh, с передачей аргументов в функцию, показана в приме- ре 10.45, а результат работы — в примере 10.46.

 

Пример 10.45. Передача значений в функции

 

#!/bin/bash function err_msg()

{

echo "Ошибка: $1" cat <<- ERR

Недостаточно аргументов. Использование: if.sh file

Аргумент file должен быть обычным файлом.

ERR

}


 

if [ $# -ne 1 ] then

err_msg '001'

exit 1 elif [ ! -f $1 ] then


 

 

fi

ls -l $1


echo -n 'Тип файла ' file $1

exit 1


 

Здесь в функцию передается строка — код ошибки. В теле функции этот код считывается из позиционного параметра.

 

Пример 10.46. Проверка передачи аргументов в функции

 

$ ./if.sh

Ошибка: 001

Недостаточно аргументов. Использование: if.sh file

Аргумент file должен быть обычным файлом.

 

Функции часто описывают в отдельных файлах, считывая в сценариях со- держимое этих файлов с помощью inline-подстановки.

 








Дата добавления: 2015-06-12; просмотров: 665;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.