Функции в сценариях оболочки
Функция — это набор команд, объединенных одним именем, которые выполняют определенную задачу. Функция вызывается по ее имени, может принимать параметры и возвращать результат работы.
Синтаксис создания функции:
имя_функции() { команда команда ....... }
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 • Функция