Як перевірити exit status команди у Linux?

Коли запускаєш команди в Linux, не завжди очевидно, чи вони виконалися успішно. Іноді все виглядає нормально, але процес насправді «впав» із помилкою.

Щоб дізнатись, чи все пройшло як треба, існує exit status — спеціальний код, який повертає кожна команда після виконання.

Знати, як перевірити цей статус, важливо не лише для розуміння, чи все працює, а й для написання надійних Bash-скриптів. Гайда розбиратись, що це за код, як його перевірити та використовувати на практиці.

Що таке exit status у Linux?

Кожна команда, яку ти запускаєш у Linux, завершується певним кодом виходу (exit status або return code).

Це просто число, яке система повертає після виконання команди.

  • 0 означає, що команда спрацювала успішно.
  • Будь-яке інше число — що сталася помилка.

Приклади деяких помилок:

  • 0 → «Все добре»
  • 1 → «Сталася загальна помилка»
  • 127 → «Команда не знайдена»
  • 126 → «Команда знайдена, але не може бути виконана»

Linux не виводить ці коди автоматично, але зберігає їх у спеціальній змінній середовища під назвою $?.

І саме її можна використати, щоб дізнатись, як завершилась остання команда.

Як перевірити статус виходу команди?

Перевірка після успішної команди

Введи у терміналі:

ls
echo $?

Що тут відбувається:

  • ls виводить список файлів у поточній директорії.
  • Команда завершується успішно, тому Linux присвоює їй статус 0.
  • Коли виконуєш echo $?, на екрані з’являється 0 — тобто все ок.

Перевірка після невдалої команди

Тепер спробуй щось, чого не існує:

ls /nonexistent
echo $?

Ця команда намагається відкрити директорію, якої немає.

ls повертає помилку, а Linux встановлює код виходу 2. Відповідно, echo $? виведе 2 — означає, що сталася помилка.

Як використовувати код виходу в Bash-скриптах?

Коди виходу особливо корисні у скриптах, коли потрібно перевірити, чи спрацювала команда, і виконати наступні дії залежно від результату.

Приклад:

#!/bin/bash
ls /etc > /dev/null
if [ $? -eq 0 ]; then
    echo "Команда виконана успішно!"
else
    echo "Помилка: команда не спрацювала."
fi

Що відбувається?

  • Команда ls /etc намагається вивести список файлів.
  • Якщо вона проходить без помилок — скрипт виведе повідомлення про успіх.
  • Якщо ні — повідомить про помилку.

Перевіряємо статус виконання команд

Щоб не перевіряти $? вручну, можна скористатися скороченою формою:

  • command && echo “Успіх” — друга команда виконується лише якщо перша пройшла без помилок.
  • command || echo “Помилка” — друга команда виконується якщо перша завершилась з помилкою.

Наприклад:

ls /etc && echo "Директорія знайдена!" || echo "Не знайдено!"

Як зберегти код виходу в змінну?

Іноді потрібно використати код пізніше в скрипті. Для цього його можна зберегти у змінну:

date
status=$?
echo "Код виходу: $status"

Тепер змінна $status містить останній код виконання. Можна використовувати її в умовах або циклах.

Як встановити власний exit code у скрипті?

Якщо ти створюєш Bash-скрипт, можна самостійно задати код виходу за допомогою команди exit.

#!/bin/bash
grep -q "root" /etc/passwd
if [ $? -eq 0 ]; then
    echo "Користувача root знайдено."
    exit 0
else
    echo "Користувача root не знайдено!" >&2
    exit 1
fi

Тут:

  • Якщо grep знайшов користувача root, скрипт завершується з кодом 0.
  • Якщо ні — з кодом 1 (означає помилку).

Як швидко перевіряти команди?

Кілька практичних прикладів:

  • Перевірити результат команди ping:
ping -c 1 google.com > /dev/null
echo $?

Якщо інтернет є — отримаєш 0. Якщо ні — 1 або будь-який інший код.

  • Перевірити доступність файлу:
test -f /etc/passwd && echo "Файл існує" || echo "Файл не знайдено"
  • Комбінувати кілька дій:
cp file.txt /backup/ && echo "Копіювання успішне" || echo "Помилка копіювання"

Такі комбінації допомагають автоматизувати дрібні завдання без написання великих скриптів.

Підсумок

Exit status — це один із базових, але ключових механізмів Linux. Він лежить в основі логіки Bash-скриптів, тестування, автоматизації та моніторингу. Ігнорування цього показника часто призводить до складнощів. 

Тому перевіряти код виходу після виконання команд — це не опція, частина роботи з Linux. Саме з таких дрібних практик формується впевненість у своїй системі та професійний підхід до DevOps.

Хочеш розібратися в Linux глибше? На курсах від ITEDU навчишся впевнено працювати з терміналом, писати Bash-скрипти та автоматизувати процеси, як справжній DevOps-герой.

Залишити відповідь

Дякуємо, що поділились