The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Как сгенерировать заданный код выхода/exit code одной командой?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как сгенерировать заданный код выхода/exit code одной командой?"  +/
Сообщение от xintrea (ok), 26-Апр-23, 14:53 
Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код возврата принимается из входного потока.

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

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

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

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от xintrea (ok), 26-Апр-23, 16:10   +/
В общем, решил через perl:

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


Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3

2. Сообщение от Pahanivo (ok), 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
Действительно, сюпрайз, мазафака.

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

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

Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от Pahanivo (ok), 26-Апр-23, 16:18   +/
> В общем, решил через perl:
>
 
>> echo 32 | perl -e 'my $a=<STDIN>; exit($a)'
>> echo $?
>> 32
>

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

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

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

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

Ответить | Правка | Наверх | Cообщить модератору

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

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

6. Сообщение от Pahanivo (ok), 27-Апр-23, 15:15   +/
>[оверквотинг удален]
>>
>> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
>> шелла...
>> Как по-другому можно решить эту задачу?
> что значит "возвратила?"
> напечатала на экран?
> код возврата который возвращает программа- на экран не печатается.. это штука которая
> существует только внутри командного процессора...
> если надо именно ВОЗВРАТИТЬ код - то
> exit код

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #8

7. Сообщение от Аноним (7), 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

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

Ответить | Правка | Наверх | Cообщить модератору

8. Сообщение от ACCA (ok), 27-Апр-23, 23:16   +/
Перестань по-стариковски пердеть. Я про другое очень огорчаюсь - здесь совсем перестали появляться студиозусы. И кого мы научим?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #9

9. Сообщение от Pahanivo (ok), 28-Апр-23, 11:26   +/
> И кого мы научим?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #10

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #11

11. Сообщение от Pahanivo (ok), 28-Апр-23, 11:40   +/
Не слушайте мнения, смотрите глазами на результат. Например на стобальников по рузкаму языгу к кауказа.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру