0Pricing
Linux Server Deployment & SSH Mastery · Урок

Функции, аргументы и повторно используемые скрипты

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

«Функции, аргументы и повторно используемые скрипты» — бесплатный урок Linux Server Deployment & SSH Mastery на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Server Deployment & SSH Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

От сценариев к инструментам

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

Так одноразовые сценарии превращаются в полноценные инструменты администратора.

Определение функции

Функция Bash объединяет команды под одним именем. Определите её один раз и вызывайте многократно. Тело функции помещается между фигурными скобками.

greet() {
  echo 'Hello from the function!'
}

greet

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

Функции получают аргументы позиционно: $1, $2 и так далее. $@ содержит все аргументы, а $# — их количество.

greet() {
  echo "Hello, $1! You are $2 years old."
}

greet Alice 30

Аргументы на уровне сценария

Те же позиционные переменные работают для всего сценария. Запустите ./deploy.sh staging v2, и сценарий прочитает $1 как «staging», а $2 как «v2».

#!/bin/bash
ENV=$1
VERSION=$2
echo "Deploying $VERSION to $ENV"

Проверка аргументов

Надёжные инструменты проверяют входные данные. Убедитесь, что количество аргументов соответствует ожидаемому, и завершите работу с сообщением об использовании, если аргументы отсутствуют.

if [ $# -lt 2 ]; then
  echo "Usage: $0 <env> <version>"
  exit 1
fi

Возврат статуса из функций

Функции возвращают статус выхода с помощью return (0 = успех). Вызывающий код проверяет его с помощью $? или непосредственно в if.

is_root() {
  [ "$(id -u)" -eq 0 ]
}

if is_root; then echo 'root'; else echo 'not root'; fi

Возврат данных из функций

Чтобы вернуть фактические данные, а не только статус, выведите их с помощью echo и перехватите результат подстановкой команды. Вызывающий код присваивает результат переменной.

timestamp() {
  date +%Y%m%d_%H%M%S
}

NOW=$(timestamp)
echo "Backup name: backup_$NOW"

Локальные переменные

По умолчанию переменные Bash являются глобальными, что вызывает ошибки при работе разных функций. Объявляйте переменные, используемые внутри функции, с помощью local, чтобы изолировать их.

add() {
  local result=$(( $1 + $2 ))
  echo $result
}

echo "Sum: $(add 3 4)"

Значения по умолчанию и именованные флаги

Задавайте разумные значения по умолчанию с помощью раскрытия параметров и разбирайте флаги, чтобы сделать инструменты удобнее.

  • ${1:-default} — использовать «default», если $1 не задана
  • getopts — разбирать флаги в стиле -v, -f file
ENV=${1:-staging}
echo "Target environment: $ENV"

Подключение библиотеки функций

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

# in lib.sh: define log(), is_root(), etc.
source ./lib.sh
log 'Starting deployment'

Рекомендации

Пишите сценарии, удобные для сопровождения:

  • Разбивайте логику на небольшие функции с понятными именами
  • Всегда проверяйте аргументы и выводите сообщение об использовании
  • Используйте local для переменных функций
  • Подключайте вспомогательные функции через файл библиотеки

Быстрая проверка

Проверьте свои знания о функциях Bash.

Итоги

Теперь Вы умеете создавать повторно используемые инструменты Bash:

  • Определять функции и многократно вызывать их
  • Передавать и проверять аргументы ($1, $@, $#)
  • Возвращать статус с помощью return, а данные — через echo и подстановку команды
  • Использовать переменные local и общие библиотеки, подключаемые с помощью source

Эти приёмы превращают одноразовые сценарии в удобный для сопровождения набор инструментов автоматизации.

Часто задаваемые вопросы

Урок «Функции, аргументы и повторно используемые скрипты» бесплатный?

Да — полный текст урока «Функции, аргументы и повторно используемые скрипты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Server Deployment & SSH Mastery, подпишись на CoddyKit PRO. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

Чему я научусь в уроке «Функции, аргументы и повторно используемые скрипты»?

Сделайте скрипты Bash модульными и удобными для сопровождения: определяйте функции, передавайте и проверяйте аргументы командной строки, возвращайте значения и создавайте скрипты, которые можно повто… Ты практикуешь Linux Server Deployment & SSH Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Linux Server Deployment & SSH Mastery?

Предыдущий опыт не требуется. Linux Server Deployment & SSH Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Функции, аргументы и повторно используемые скрипты»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Linux Server Deployment & SSH Mastery?

Да. Каждый урок Linux Server Deployment & SSH Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Введение в написание сценариев Bash
  2. Автоматизация задач сервера
  3. Обработка ошибок и ведение журналов в сценариях
  4. Функции, аргументы и повторно используемые скрипты
← Назад к Linux Server Deployment & SSH Mastery