Руководство по функциям в Bash с примерами

Руководство по функциям в Bash с примерами

Рубрики:

Bash, Linux

Метки:

Bash, linux

В программировании функции — именованные блоки кода, которые выполняют определенную задачу или набор задач. Они принимают входные данные, называемые параметрами или аргументами. В результате выполнения, функции возвращают выходные данные. Также они обеспечивают модульность кода и возможность повторного его использования без дублирования.

В этой статье мы изложим основы функций в скриптах Bash и покажем их применение в Linux.

Содержание: 

  1. Синтаксис функций в Bash
  2. Передача аргументов в функцию
  3. Переменные в функциях
  4. Возвращение значений из функций
  5. Практические примеры использования функций в Bash
    1. Проверка, является ли число простым
    2. Вычисление последовательности Фибоначчи
  6. Выводы

Синтаксис функций в Bash

Синтаксис определения функции в Bash прост и выглядит следующим образом:

 

Где:

  • function_name — название функции (перед ним Вы можете писать ключевое слово function, но оно необязательно);
  • () — скобки после названия, которые используются для заключения параметров функции (параметры являются необязательными);
  • {} — фигурные скобки, в которых заключено тело функции (команды, которые составляют логику функции и выполняются при каждом ее вызове).

function syntax

Чтобы вызвать ранее определенную функцию, напишите в коде скрипта ее название:

 

call function

Читайте также: 10 полезных советов для написания эффективных bash скриптов в Linux.

Передача аргументов в функцию

Функция в Bash может принимать аргументы, значения которых следует передать при ее вызове. Аргументы доступны внутри функции благодаря специальным переменным, таким как $1, $2 и так далее, обозначающим первый, второй и последующие аргументы, соответственно. Например:

 

pass arguments

На скриншоте выше видно, что при выполнении функции значение переменной $1 было заполнено первым аргументом (arg1), а значение $2вторым аргументом (arg2).

В функциях Вы также можете использовать и другие специальные переменные:

  • $0 — сохраняет название функции;
  • $# — указывает количество аргументов, переданных функции;
  • $@ — выводит на экран каждый аргумент функции с новой строки;
  • $* — выводит на экран каждый аргумент функции в одну строку, разделяя их пробелами;
  • $# — содержит количество параметров, переданных в функцию.

Переменные в функциях

В функциях могут использоваться два типа переменных:

  1. Локальные — объявляются в теле функции с помощью ключевого слова local. Они недоступны за пределами функции и не сохраняются после ее выполнения. Локальные переменные помогают предотвратить непреднамеренное взаимодействие с одноименными переменными в других частях кода.
  2. Глобальные — объявляются вне какой-либо функции и к ним можно обращаться из любого участка кода, в том числе изнутри функций.

Важно: если локальная переменная имеет то же название, что и глобальная, то она имеет приоритет выполнения внутри функции.

Например, напишем скрипт, в котором используем два типа переменных:

 

variables

Этот код наглядно демонстрирует поведение переменных в функциях Bash. Локальные переменные, объявленные внутри функций, имеют приоритет перед одноименными глобальными переменными, но они не влияют на их значения за пределами функции.

Читайте также: Как проверить количество аргументов, переданных скрипту Bash.

Возвращение значений из функций

Когда выполнение функции завершается, по умолчанию она возвращает статус выхода последней команды в ее теле.

Вы можете самостоятельно указать состояние выхода из функции с помощью оператора return. В качестве его значения разрешено передать числа от 0 до 255. По общему правилу, статус выхода 0 означает успех, в то время как любое другое число обычно указывает на ошибку или сбой. Получить доступ к состоянию выхода из функции можно с помощью специальной переменной $?. Например:

 

return function value

Чтобы действительно вернуть значение из функции, Вы можете записать результат ее выполнения в глобальную переменную:

 

return function value1

Хотя этот метод прост и работает, важно отметить недостатки широкого использования глобальных переменных, особенно в больших программах:

  • иногда бывает сложно отследить изменения их состояния;
  • код, который в значительной степени опирается на глобальные переменные, может быть сложным для понимания и поддержания;
  • чрезмерное использование глобальных переменных может привести к «загрязнению области видимости», когда переменные доступны из разных частей кода.

Чтобы избежать этих проблем, лучше применить локальные переменные и подстановку команд в Linux. Подстановка команд — механизм, который позволяет запускать утилиту / код и вставлять ее вывод / результат обратно в командную строку в качестве аргументов другой команды. В Bash подстановка команд обычно выполняется путем заключения выражения в $(). Например:

 

return function stdout

Читайте также: Как использовать цикл for в Linux.

Практические примеры использования функций в Bash

Давайте рассмотрим несколько практических примеров, чтобы убедится в универсальности функций в Bash.

Проверка, является ли число простым

Допустим, нам нужно написать скрипт, который выполняет проверку того, является ли число простым. Для решения этой задачи напишем функцию:

 

is prime fucntion

Давайте детальнее разберем ее структуру:

  1. is_prime — название.
  2. local num=$1 — локальная переменная, которая принимает первый аргумент, переданный функции.
  3. Цикл for перебирает значения в заданном диапазоне.
  4. Оператор if используется для вывода сообщений, в зависимости от результата проверки числа:
    • если число не является простым, функция печатает указанный текст и вызывает оператор return, который завершает ее работу, независимо от оставшихся итераций в цикле;
    • если число является простым, функция выводит указанный текст;
  5. is_prime 29 — строка, которая вызывает функцию с аргументом 29.

Вычисление последовательности Фибоначчи

Чтобы вывести на экран числа из последовательности Фибоначчи, придется использовать рекурсивную функцию. Это особая функция, которая прямо или косвенно вызывает саму себя для решения задачи. Вот пример кода, который позволяет вычислить последовательность Фибоначчи:

 

fibonacci function

Здесь кратко описано, как работает код:

  1. Функция fibonacci() принимает первый аргумент n, который представляет собой индекс числа Фибоначчи для вычисления.
  2. Если n меньше или равно 1, функция возвращает само n. Этот случай покрывает первые два числа Фибоначчи: 0 и 1.
  3. Если n больше 1, функция рекурсивно вызывает саму себя с аргументами n-1 и n-2. Затем она складывает результаты вызовов для вычисления числа Фибоначчи для n.
  4. Цикл for проходит от 0 до 9, вызывая функцию fibonacci() для каждого индекса и выводя полученное число Фибоначчи.

Выводы

Функции играют ключевую роль в сценариях Bash, обеспечивая модульность, повторное использования и улучшенную организацию кода. Освоив их концепцию, Вы сможете создавать удобные в обслуживании и масштабируемые решения для широкого круга задач.

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасности от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Bash, Linux

Метки:

Bash, linux

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики