Как да проверим статуса на изхода на команда в Linux
Когато работите на Linux система, всяка команда, която изпълнявате, връща код на статуса (наричан още код на изхода или върнат код), който ви уведомява дали е била изпълнена успешно или е неуспешна.
Като потребител на Linux, особено ако учите програмиране на шел или отстраняване на проблеми, е изключително важно да знаете как да проверите статуса на завършване на команда.
В тази статия ще обясня какво означава статус на изход, как да го проверите и защо е важен.
Какво е статус на изхода в Linux?
Всякога, когато изпълнявате команда в Linux, системата тихо ви дава оценка в края, която е просто число, наречено код за изход (или код на връщане).
- Ако числото е
0, това означава, че командата е изпълнена успешно, без никакви грешки. - Ако числото не е
0, това означава, че командата не е успяла да бъде изпълнена по някакъв начин.
Помислете за това по следния начин:
- Всичко е наред!
- Нещо се обърка (обща грешка)
2,127,126, и т.н.=Различни видове проблеми, като «файлът не е намерен» или «командата не може да се изпълни».
Не винаги виждате тези числа на екрана, но Linux ги съхранява в специална променлива, наречена $?. Можете да я проверите по всяко време, за да разберете дали последната ви команда е изпълнена успешно или е неуспешна.
Съвет: Тези кодове за изход са особено важни, когато пишете Bash скриптове, защото ви помагат да взимате решения в зависимост от това дали командата е преминала или е неуспешна.
Как да проверим изходния статус на команда
В Linux, изходният статус на последната команда, която сте изпълнили, се съхранява в специална shell променлива, наречена:
$?
Най-добрият начин да разберете статуса на изхода е всъщност да изпълните команди.
Пример 1: Успешна команда
ls
echo $?
Какво се случва тук:
- Първо,
lsпоказва файловете в текущата ви директория. - Тъй като командата работи без никакви проблеми, Linux задава изходния статус на
0. - Когато веднага проверим статуса, използвайки
echo $?, той извежда0.
Кодът за изход 0 винаги означава успешен резултат. Така че в този случай команда ls направи точно това, което очаквахме.
Пример 2: Неуспешна команда
ls /nonexistent
echo $?
Какво се случва тук:
- Опитахме се да изброим файловете в директория, наречена
/nonexistent. - Тази директория не съществува в системата, така че командата
lsне успява. - След това Linux задава статуса на изхода на ненулево число (в този случай
2). - Когато проверим с
echo $?, виждаме:
Пример 3: Използване на статус на изхода в скрипт
Статусите на изхода стават наистина полезни, когато ги използвате в шел скриптове, тъй като скриптовете често трябва да взимат решения в зависимост от това дали командата е успешна или не.
Нека разгледаме един прост пример:
#!/bin/bash
ls /etc > /dev/null
if [ $? -eq 0 ]; then
echo "Command successful!"
else
echo "Command failed!"
fi
Какво се случва тук:
- Ако командата
lsработи → извежда “Командата е успешна! ”. - Ако не успее → отпечатва „Командата не успя! “.
По-чист начин: Използване на && и ||
Вместо да проверявате $? всеки път, можете да свържете команди:
command && echo "Успех"→ изпълнява втората команда само ако първата е успешна.command || echo "Неуспешно"→ изпълнява втората команда само ако първата не е успешна.
Пример:
ls /etc && echo "Found it!" || echo "Not found!"
Общи кодове за статус на изхода
Ето някои често срещани кодове за извеждане:
| Изходен код | Значение |
|---|---|
| Успех | |
| 1 | Обща грешка |
| 2 | Неправилна употреба на командата на черупката |
| 126 | Намерена команда, но не може да бъде изпълнена |
| 127 | Команда не е намерена |
| 130 | Скриптът е прекратен с Ctrl+C |
| 255 | Статус на изхода извън обхвата |
Заключителни мисли
Статусът на изхода е малко число, но играе голяма роля при изпълнението на команди интерактивно или при писането на шел скриптове. Разбирането на кодовете за изход помага да отстранявате проблеми и да контролирате работния си процес.
Следващия път, когато команда не работи както се очаква, не се ограничавайте само до разглеждане на съобщението за грешка, а проверете и статуса на изхода!

