проверить успешность выполнения команды в Bash

Thank you for reading this post, don't forget to subscribe!

Проверка команды выполнена успешно

Вся­кий раз, когда коман­да запус­ка­ет­ся, воз­вра­ща­е­мое зна­че­ние коман­ды сохра­ня­ет­ся в опре­де­лен­ной пере­мен­ной в bash. В пер­вом при­ме­ре запу­стим дис­пет­чер паке­тов для обнов­ле­ния систе­мы. В нашем слу­чае это Ubuntu, поэто­му коман­да будет при­мер­но такой.

Здесь, по выход­ным дан­ным, мы можем лег­ко ска­зать, что коман­да выпол­не­на успеш­но. Теперь каж­дая коман­да, выпол­ня­е­мая в обо­лоч­ке bash, воз­вра­ща­ет зна­че­ние, кото­рое хра­нит­ся в пере­мен­ной bash «$?». Что­бы полу­чить зна­че­ние, запу­сти­те эту команду.

Если коман­да выпол­не­на успеш­но, воз­вра­ща­е­мое зна­че­ние будет 0. Если воз­вра­ща­е­мое зна­че­ние иное, зна­чит, она не выпол­ни­лась долж­ным обра­зом. Давай­те про­ве­рим это. Выпол­ни­те ту же коман­ду обнов­ле­ния, но на этот раз пре­рви­те ее, нажав «Ctrl + C».

 

Теперь про­верь­те зна­че­ние пере­мен­ной bash.

Зна­че­ние не рав­но 0, поэто­му опре­де­лен­но есть ошиб­ка. Здесь мы заста­ви­ли коман­ду пре­рвать­ся. Как это может быть полез­но в сце­на­ри­ях bash? Вот быст­рый при­мер того, как исполь­зо­вать его в сце­на­рии bash. Сохра­ни­те сце­на­рий как тек­сто­вый файл с рас­ши­ре­ни­ем .sh.

Сде­лай­те файл исполняемым.

Теперь запу­стим сценарий.

После выпол­не­ния любой коман­ды bash обно­вит зна­че­ние пере­мен­ной. В этом слу­чае после выпол­не­ния коман­ды echo мы можем опре­де­лить, успеш­но она выпол­ни­лась или нет. Заме­ни­те коман­ду echo чем угод­но и вуаля!

Вот еще один инте­рес­ный метод, кото­рый может под­твер­дить успеш­ность выпол­не­ния коман­ды. Это про­сто одно­строч­ная коман­да, кото­рая очень проста.

Здесь коман­да раз­де­ле­на на две части сим­во­лом «||». Если пер­вая коман­да выпол­ня­ет­ся успеш­но, долж­на выпол­нять­ся пер­вая коман­да echo. В про­тив­ном слу­чае будет запу­ще­на вто­рая коман­да echo. Давай­те про­ве­рим это на примере.

Пер­вая часть не уда­лась, поэто­му пер­вая коман­да echo была про­пу­ще­на. Вме­сто это­го была запу­ще­на вто­рая коман­да echo, ука­зы­ва­ю­щая на то, что пер­вая часть не была выпол­не­на успеш­но. Что, если все про­шло успешно?

Была акти­ви­ро­ва­на пер­вая коман­да echo.

Вот еще один при­мер сце­на­рия bash.

Запус­ка­ем скрипт.

Если коман­да не уда­лась, резуль­тат будет другим.

Какой сце­на­рий bash исполь­зо­вать? Мы насто­я­тель­но реко­мен­ду­ем пер­вый, в кото­ром сна­ча­ла запус­ка­ет­ся коман­да, а затем зна­че­ние «$?» извле­ка­ет­ся в пере­мен­ной, а затем выпол­няй­те все, что хоти­те, в зави­си­мо­сти от зна­че­ния переменной.