Искусство программирования на языке сценариев командной оболочки


Программирование на языке сценариев командной оболочки - стр. 232


bozo_greet # Работает только у пользователя bozo, другие получат сообщение об ошибке.

# Нечто подобное можно использовать с определеной пользой для себя. NO_EXIT=1 # Will enable function definition below.

[[ $NO_EXIT -eq 1 ]] && exit() { true; } # Определение функции в последовательности "И-список". # Если $NO_EXIT равна 1, то объявляется "exit ()". # Тем самым, функция "exit" подменяет встроенную команду "exit".

exit # Вызывается функция "exit ()", а не встроенная команда "exit".

# Спасибо S.C.

22.1. Сложные функции и сложности с функциями

Функции могут принимать входные аргументы и возвращать код завершения.

function_name $arg1 $arg2

Доступ к входным аргументам, в функциях, производится посредством позиционных параметров, т.е. $1, $2 и так далее.

Пример 22-2. Функция с аргументами

#!/bin/bash # Функции и аргументы

DEFAULT=default # Значение аргумента по-умолчанию.

func2 () { if [ -z "$1" ] # Длина аргумента #1 равна нулю? then echo "-Аргумент #1 имеет нулевую длину.-" # Или аргумент не был передан функции. else echo "-Аргумент #1: \"$1\".-" fi

variable=${1-$DEFAULT} # Что делает echo "variable = $variable" #+ показанная подстановка параметра? # --------------------------- # Она различает отсутствующий аргумент #+ от "пустого" аргумента.

if [ "$2" ] then echo "-Аргумент #2: \"$2\".-" fi

return 0 }

echo

echo "Вызов функции без аргументов." func2 echo

echo "Вызов функции с \"пустым\" аргументом." func2 "" echo

echo "Вызов функции с неинициализированным аргументом." func2 "$uninitialized_param" echo

echo "Вызов функции с одним аргументом." func2 first echo

echo "Вызов функции с двумя аргументами." func2 first second echo

echo "Вызов функции с аргументами \"\" \"second\"." func2 "" second # Первый параметр "пустой" echo # и второй параметр -- ASCII-строка.




- Начало -  - Назад -  - Вперед -