Предположим, что у нас есть функция-обёртка, которая последним действием вызывает нечто другое и хочет вернуть его (этого чего-то) exit code. Например, вот так:
function pkgbuild_is_devel() {
local NAME="$1"
[[ "$NAME" =~ -(svn|cvs|git|hg)$ ]]
}
Проблема в том, что при выполнении скрипта с set -e
(«Exit immediately if a pipeline (which may consist of a single simple command), a list, or a compound command, exits with a non-zero status») так не напишешь: последняя строка совершенно правомерно валит скрипт. Приходится писать так:
function pkgbuild_is_devel() {
local NAME="$1"
if [[ "$NAME" =~ -(svn|cvs|git|hg)$ ]]; then
return 0
else
return 1
fi
}
Так работает, потому что команды-условия исключаются из этой проверки. Но это слишком громоздко. Отсюда вопрос: каким образом это можно сделать компактнее? Отключить set -e
не предлагать.
(Я надеюсь, что на ЛОРе есть хотя бы один человек, которому вообще не пофиг на обработку ошибок в скриптах: судя по инит-срачам, все местные скриптолюбители всегда пишут едва ли не идеальный код.)