19.11.2. Вызов функций из файла функций
19.11.2. Вызов функций из файла функций
Мы уже рассматривали, каким образом функции вызываются из командной строки. Эти типы функций обычно используются утилитами, создающими системные сообщения.
А теперь воспользуемся снова описанной выше функцией, но в этом случае поместим ее в файле функций. Назовем этот файл functions.sh, где "sh" означает "shell scripts" (сценарии интерпретатора shell).
$ pg functions.sh
#!/bin/sh
#functions.sh
#основные функции
is_it_a_directory () (
#is_it_a_directory
#вызов: is_it_a_directory имя_каталога #
if [ $# -lt 1 ]; then
echo "is_it_a_directory: I need a directory name to check"
return 1
fi
# это каталог ?
DIRECTORY_NAME=$1
if [ ! -d $DIRECTORY_NAME ]; then
return 1 else
return D fi )
error_msg ()
{
echo -e "07"
echo $@
echo -e "07"
return 0
}
Создадим сценарий, вызывающий функции из файла functions.sh. Затем эти функции могут использоваться для выполнения каких?либо задач. Обратите внимание, что файл функций загружается с помощью следующего формата команд:
. /<путь к файлу>
При использовании этого метода не создается порожденный интерпретатор shell; все функции остаются в текущем интерпретаторе shell.
$ pg dlrec_check
#!/bin/sh
# direc_check
# загрузка файла функций functions.sh # ниже точка, пробел и косая черта. /home/dave/bin/functions.sh
# теперь могут использоваться функции
echo -n "enter destination directory :"
read DIREC
if is_it_a_directory $DIREC
then : .
else
error_msg "$DIREC does not exist… creating it now"
mkdir $DIREC > /dev/null 2>$1
if [ $? ! — 0 ]
then
error_msg "Could not create directory: check it out!"
exit 1
else :
fi
fi # не является каталогом
echo "extracting files…"
При выполнении сценария получается тот же вывод, что и при встраивании функции в сценарий:
S direc_check
enter destination directory :AUDIT
AUDIT does not exist… creating it now
extracting files…
Больше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ