[freebsd] exit utility
Valentin Nechayev
netch at netch.kiev.ua
Fri Feb 9 09:19:13 EET 2018
hi,
Fri, Feb 09, 2018 at 08:16:53, spell wrote about "Re: [freebsd] exit utility":
> > $ set_status() { return $1; }
> > $ set_status 26
> > $ echo $?
> > 26
>
> Спасибо, оно!
> (затупила подумать в эту сторону)
> (хотя всё-таки это дополнительная громоздкость, и для полноты счастья
> хотелось бы готового (даже не утилиту, а builtin, устанавливающий экситкод
> (переменную $?), наподобие builtin true/false))
Его не предусматривают, мне кажется, потому, что $? неустойчива - она
модифицируется каждой следующей командой. Поэтому, если кому-то этот
статус нужен дольше, чем на проверку одним выстрелом, он копируется в
другую, явно названную переменную, которая хранит результат уже
постоянно. А этой переменной уже можно присвоить нужное значение
напрямую, без подобных хитростей. Даже если после этого пользовать
конструкции && ||, это делается достаточно легко в стиле
test $saved_status = 0 && ветка1 || ветка2
Поэтому мне изначально вся проблема кажется надуманной, или попыткой
решения в условиях "категорически запретили приводить стиль к
нормальному". Или же какие-то ситуации в духе "100500 веток case,
из которых 99% просто передают статус последней команды в теле ветки,
но для 1% его надо выставить вручную" (а почему тогда не true/false,
они же тоже встроены?) - тоже редкий и странный вариант.
Но в первом ответе я не хотел акцентироваться на этом. Достаточно
того, что функции и return встроены в любой современный шелл и стоят
реально копейки.
-netch-
More information about the freebsd
mailing list