LINUX.ORG.RU

[bash] Пример кода, условное выполнение команд

 


0

1

Откопал скрипт на баше, насколько я понимаю, человек его писал грамотный, но уместность конструкции мне не ясна:

mkdir "$point" || exit "$?" 

что происходит - мне понятно, зачем это сделано? спросить у автора нет возможности. Допустим, первая команда по каким-то причинам вернет не 0, тогда происходит выход из оболочки с кодом, который был у mkdir. Какая от этого польза? Тем более, что я даже этот код не увижу.


Тем более, что я даже этот код не увижу.

Если этот код в скрипте, то ты сможешь его получить в родительской оболочке.

GotF ★★★★★
()

Тем более, что я даже этот код не увижу.

Можно настроить строку приглашения и увидеть, у меня, например, смайликами цветными показывается и код возврата пишется в случае ошибки.

vga ★★
()

Нормальный код. сделать директорию или выйти если не получится. Читаемо, работает. что не так?

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Чем чревато если я отброшу все от || ? Ну вывалится мне ошибка, что не могу создать директорию, это же не критично

K-Vrat
() автор топика
Ответ на: комментарий от K-Vrat

А дальше оно попытается в это директорию cd, а потом что-нибудь распаковать, да скомпильнуть и т.д. А в результате засраный хомяк и потеряные данные. И исходная задаче всё равно не будет выполнена. Нет уж, нет директории - надо останавливаться.

legolegs ★★★★★
()

> зачем это сделано?

чтобы остановить выполнение скрипта, если не удалось создать директорию.

name_no ★★
()
Ответ на: комментарий от K-Vrat

> Ну вывалится мне ошибка, что не могу создать директорию, это же не критично

А она тебе и в исходном варианте вывалится.

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

только при этом выполнение скрипта продолжится что часто нежелательно.

true_admin ★★★★★
()
Ответ на: комментарий от legolegs

> А дальше оно попытается в это директорию

А set -e -o pipefail :) Скрипты будут втрое короче и понятнее. Но да, проверять статус всё равно надо или так, или эдак.

const86 ★★★★★
()
Ответ на: комментарий от anon_666

У автора кода перл головного мозга.

у меня чуть менее чем все условные конструкции в баше подобного рода, жаль низя делать группировку команд иначе чем вызывая новый шелл :/

foo && bar || baz

лаконично, понятно и красиво, в отличие от

lazyklimm ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.