Функции в сценариях оболочки

17.05.2018

Теги: BashCLILinuxФункция

Функция — это набор команд, объединенных одним именем, которые выполняют определенную задачу. Функция вызывается по ее имени, может принимать параметры и возвращать результат работы.

Синтаксис создания функции:

имя_функции() {
    команда
    команда
    .......
}
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 • Функция

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.