Функции в сценариях оболочки
Функция — это набор команд, объединенных одним именем, которые выполняют определенную задачу. Функция вызывается по ее имени, может принимать параметры и возвращать результат работы.
Синтаксис создания функции:
имя_функции() { команда команда ....... }
function имя_функции { команда команда ....... }
Функция должна быть объявлена раньше, чем ее можно будет использовать.
#!/bin/bash function print_string { echo "Пример использования функции" } count=1 while [ $count -le 3 ] ; do print_string $(( count++ )) done
$ ./function.sh Пример использования функции Пример использования функции Пример использования функции
Использование команды return
Команда return позволяет задавать возвращаемый функцией целочисленный код завершения, который доступен через переменную $?:
return число
Если параметр число опущен, то возвращается состояние завершения последней команды. Максимальное число, которое может вернуть команда return — 255.
#!/bin/bash function return_value { read -p "Введите значение: " value return $(( value + 10 )) } return_value echo "Код завершения функции $?"
Ещё один способ возврата результатов работы функции заключается в записи данных, выводимых функцией, в переменную. Такой подход позволяет обойти ограничения команды return и возвращать из функции любые данные:
#!/bin/bash function return_value { read -p "Введите значение: " value echo $(( value + 10 )) } result=$(return_value) echo "Возвращенное значение $result"
Аргументы функций
Функции могут использовать стандартные позиционные параметры, в которые записывается то, что передаётся им при вызове. Например, имя функции хранится в параметре $0, первый переданный ей аргумент — в $1, второй — в $2, и так далее. Количество переданных функции аргументов можно узнать, обратившись к переменной $#.
#!/bin/bash function print_sum { echo $(( $1 + $2 )) } print_sum 10 20
#!/bin/bash function print_string { while [ $# -gt 0 ] ; do echo $1 shift done } print_string 'Первая строка' 'Вторая строка' 'Третья строка'
Локальные переменные
Если объявить обычную переменную в функции, то она будет доступной во всем скрипте, но иногда может понадобиться создать локальную переменную. Для этого существует команда local:
#!/bin/bash print_string() { local first=$1 echo ${first} } print_string 'Hello World'
Поиск: Bash • CLI • Linux • local • return • return • Функция