Что возвращает функция в bash?

«Что возвращает функция в bash?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функция в Bash возвращает целочисленный код завершения (exit status) от 0 до 255. По соглашению, 0 означает успех, любое ненулевое значение — ошибку.

Ключевые моменты:

  • Возвращаемое значение — это статус, а не данные. Для передачи данных используется стандартный вывод (stdout).
  • Если не указать return явно, функция вернет код последней выполненной команды.

Примеры из скриптов автоматизации:

#!/bin/bash

# 1. Функция проверяет, запущен ли процесс, и возвращает статус
is_process_running() {
    local process_name="$1"
    pgrep -f "$process_name" > /dev/null 2>&1
    # Возвращается код выполнения pgrep (0 если процесс найден)
    return $?
}

if is_process_running "nginx"; then
    echo "Nginx is running."
else
    echo "Nginx is NOT running. Starting..."
    systemctl start nginx
fi

# 2. Функция с явным возвратом кода ошибки
validate_config() {
    local config_file="$1"
    if [[ ! -f "$config_file" ]]; then
        echo "Config file not found!" >&2
        return 1  # Возвращаем код ошибки
    fi
    # Проверка синтаксиса, например, для JSON
    if ! jq empty "$config_file" 2>/dev/null; then
        echo "Invalid JSON in config!" >&2
        return 2  # Другой код ошибки
    fi
    return 0  # Явный возврат успеха
}

validate_config "/etc/app/config.json"
case $? in
    0) echo "Config is valid." ;;
    1) echo "Error: File missing." ;;
    2) echo "Error: Invalid syntax." ;;
esac

В DevOps-скриптах такая логика используется для принятия решений в CI/CD пайплайнах (продолжить/прервать деплой) или в скриптах мониторинга.