В това ръководство проверете как да проверите bash изходния код на последната команда и някои възможни употреби от нея.
Код за изход на Bash
Всяка команда UNIX / Linux, изпълнена от скрипта на обвивката или потребителя, оставя състояние на изход. Това е цяло число, което остава непроменено, освен ако не се изпълни следващата команда. Ако изходният код е 0, тогава командата е била успешна. Ако изходният код не е нулев (1-255), това означава грешка.
Има много потенциални употреби на изходния код на bash. Най-очевидният е, разбира се, да се провери дали последната команда се изпълнява правилно, особено ако командата не генерира изход.
В случай на bash, изходният код на предишната команда е достъпен чрез променливата на черупката „$?”.
Проверка на баш изходния код
Стартирайте терминал и изпълнете всяка команда.
$ датаПроверете стойността на променливата на черупката „$?”За изходния код.
$ echo $?
Тъй като командата “date” се изпълнява успешно, изходният код е 0. Какво би се случило, ако имаше грешка?
Нека опитаме да изпълним команда, която не съществува.
$ abcdПроверете кода за изход.
$ echo $?
Това е ненулева стойност, което показва, че предишната команда не се е изпълнила правилно.
Сега погледнете следната команда:
$ проба за котка.txt | grep „монета“
Когато работите с команда, която има една или повече тръби, изходният код ще бъде на последния код, изпълнен в тръбата. В този случай това е командата grep.
Тъй като командата grep беше успешна, тя ще бъде 0.
$ echo $?
В този пример, ако командата grep не успее, тогава изходният код ще бъде ненулев.
$ проба за котка.txt | grep “abcd”$ echo $?
Включване на изходен код в скриптове
Изходният код може да се използва и за скриптове. Един прост начин за използването му е чрез присвояване на променлива на черупката и работа с нея. Ето примерен скрипт на черупката, който използва изходния код като условие за отпечатване на конкретни резултати.
$ #!/ bin / bash$ echo "здравей свят"
$ статус = $?
$ [$ status -eq 0] && echo "команда е успешна" || echo "команда неуспешна"
Когато се изпълнява, скриптът ще генерира следния изход.
Сега нека видим какво ще стане, когато има невалидна команда за изпълнение.
$ #!/ bin / bash$ random-command
$ статус = $?
$ [$ status -eq 0] && echo "команда е успешна" || echo "команда неуспешна"
Когато се изпълнява, изходът ще бъде различен.
Обяснение на стойността на кода за изход
Когато изходният код е различен от нула, стойността варира от 1 до 255. Какво означава тази стойност?
Въпреки че стойността е ограничена, обяснението на всяка стойност е уникално за програмата / скрипта. Например „ls“ и „grep“ имат различни обяснения за кода за грешка 1 и 2.
$ man ls$ man grep
Определяне на състоянието на изхода в скрипта
Когато пишем скрипт, можем да дефинираме персонализирани стойности на изходния код. Това е полезен метод за по-лесно отстраняване на грешки. В bash скриптовете това е командата “exit”, последвана от стойността на кода за изход.
$ изходСъгласно конвенцията се препоръчва да се присвои код за изход 0 за успешно изпълнение и да се използва останалото (1-255) за възможни грешки. Когато стигнете до командата за излизане, изпълнението на скрипта на обвивката ще бъде прекратено, така че бъдете внимателни при поставянето му.
Погледнете следния скрипт на черупката. Тук, ако условието е изпълнено, скриптът ще завърши с изходния код 0. Ако условието не е изпълнено, тогава изходният код ще бъде 1.
$ #!/ bin / bash$ if [["$ (whoami)" != корен]]; тогава
$ echo "Не е потребител на root."
$ изход 1
$ fi
$ echo "root потребител"
$ изход 0
Проверете резултата от изпълнението на този скрипт без права на sudo или „root“ потребител.
$ ./ проба.ш$ echo $?
Финални мисли
Това ръководство показва какво представляват кодовете за изход и как можете да ги използвате. Той също така демонстрира как да присвоите подходящи кодове за изход в bash скрипт.
Интересува се от bash скриптове? Един от най-лесните начини да започнете е да пишете свои собствени скриптове. Вижте това просто ръководство за това как да напишете прост bash скрипт.
Щастливи компютри!