[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