URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10444
[ Назад ]

Исходное сообщение
"Как сгенерировать заданный код выхода/exit code одной командой?"

Отправлено xintrea , 26-Апр-23 14:53 
Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код возврата принимается из входного потока.

Пытаюсь сделать так:

> echo 32 | xargs exit
xargs: exit: Нет такого файла или каталога

Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами шелла...

Как по-другому можно решить эту задачу?


Содержание

Сообщения в этом обсуждении
"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено xintrea , 26-Апр-23 16:10 
В общем, решил через perl:

> echo 32 | perl -e 'my $a=<STDIN>; exit($a)'
> echo $?
> 32



"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено Pahanivo , 26-Апр-23 16:18 
> В общем, решил через perl:
>
 
>> echo 32 | perl -e 'my $a=<STDIN>; exit($a)'
>> echo $?
>> 32
>

вопрос открытый - зачем это надо?



"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено Pahanivo , 26-Апр-23 16:13 
> Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код
> возврата принимается из входного потока.

1) Зачем?
2) Прими код, сделай выход с этим кодом ВНУТРИ своей софтины.
3) Но зачем?

> Пытаюсь сделать так:
>

> echo 32 | xargs exit 
> xargs: exit: Нет такого файла или каталога
>

Ну тут как бы если и сработает, то код возврата exit увидит только xargs, а конвеер увидит код возврата xargs.

> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
> шелла...

xargs -- construct argument list(s) and execute utility
Действительно, сюпрайз, мазафака.

> Как по-другому можно решить эту задачу?

Какую задачу то?


"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено Ann None , 26-Апр-23 17:28 
> Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код
> возврата принимается из входного потока.
> Пытаюсь сделать так:
>
> echo 32 | xargs exit 
> xargs: exit: Нет такого файла или каталога
>

> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
> шелла...
> Как по-другому можно решить эту задачу?

а переменная $? не спасет гиганта мысли?


"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено ыы , 27-Апр-23 10:22 
> Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код
> возврата принимается из входного потока.
> Пытаюсь сделать так:
>
> echo 32 | xargs exit 
> xargs: exit: Нет такого файла или каталога
>

> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
> шелла...
> Как по-другому можно решить эту задачу?

что значит "возвратила?"

напечатала на экран?

код возврата который возвращает программа- на экран не печатается.. это штука которая существует только внутри командного процессора...

если надо именно ВОЗВРАТИТЬ код - то
exit код


"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено Pahanivo , 27-Апр-23 15:15 
>[оверквотинг удален]
>>

>> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
>> шелла...
>> Как по-другому можно решить эту задачу?
> что значит "возвратила?"
> напечатала на экран?
> код возврата который возвращает программа- на экран не печатается.. это штука которая
> существует только внутри командного процессора...
> если надо именно ВОЗВРАТИТЬ код - то
> exit код

Код завершения: сначала передать, получит, завершиться им, затем его посмотреть и в конце вывести .. )))
Вещества нонча огонь! )))


"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено ACCA , 27-Апр-23 23:16 
Перестань по-стариковски пердеть. Я про другое очень огорчаюсь - здесь совсем перестали появляться студиозусы. И кого мы научим?

"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено Pahanivo , 28-Апр-23 11:26 
> И кого мы научим?

Сейчас не учат, сейчас на тесты натаскивают. Как обычно - сделали со своим блекджеком, но сути исходной не поняли ))
ПыСы: да, я буду бздеть )))


"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено ыы , 28-Апр-23 11:30 
>> И кого мы научим?
> Сейчас не учат, сейчас на тесты натаскивают. Как обычно - сделали со
> своим блекджеком, но сути исходной не поняли ))
> ПыСы: да, я буду бздеть )))

есть мнение, что тесты те мне менее  (например ЕГЭ) - хорошая вещь.


"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено Pahanivo , 28-Апр-23 11:40 
Не слушайте мнения, смотрите глазами на результат. Например на стобальников по рузкаму языгу к кауказа.


"Как сгенерировать заданный код выхода/exit code одной командой?"
Отправлено Аноним , 27-Апр-23 21:31 
Получить код из stdin и с ним выйти можно как-то так
echo 111 | (read x; exit $x)

Очевидно, что так делать бессмысленно. Код возврата здоровые люди используют только из специальной переменной и ни в какой ввод никому ее не передают (зачем!?).

if ! ./foo ; then
  exit $?
fi

Или если нужно какой-то свой код вернуть на выбор

if ! ./foo ; then
  [ "$?" eq 123 ] && exit 321
  [ "$?" eq 222 ] && exit 11
  ...
fi

%%Не открывавшим даже ман по шеллу: вон из профессии.%%