Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код возврата принимается из входного потока.Пытаюсь сделать так:
> echo 32 | xargs exit
xargs: exit: Нет такого файла или каталога
Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами шелла...Как по-другому можно решить эту задачу?
В общем, решил через perl:
> echo 32 | perl -e 'my $a=<STDIN>; exit($a)'
> echo $?
> 32
> В общем, решил через perl:
>
>> echo 32 | perl -e 'my $a=<STDIN>; exit($a)'
>> echo $?
>> 32
>вопрос открытый - зачем это надо?
> Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код
> возврата принимается из входного потока.1) Зачем?
2) Прими код, сделай выход с этим кодом ВНУТРИ своей софтины.
3) Но зачем?> Пытаюсь сделать так:
>> echo 32 | xargs exit
> xargs: exit: Нет такого файла или каталога
>Ну тут как бы если и сработает, то код возврата exit увидит только xargs, а конвеер увидит код возврата xargs.
> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
> шелла...xargs -- construct argument list(s) and execute utility
Действительно, сюпрайз, мазафака.> Как по-другому можно решить эту задачу?
Какую задачу то?
> Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код
> возврата принимается из входного потока.
> Пытаюсь сделать так:
>> echo 32 | xargs exit
> xargs: exit: Нет такого файла или каталога
>
> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
> шелла...
> Как по-другому можно решить эту задачу?а переменная $? не спасет гиганта мысли?
> Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код
> возврата принимается из входного потока.
> Пытаюсь сделать так:
>> echo 32 | xargs exit
> xargs: exit: Нет такого файла или каталога
>
> Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами
> шелла...
> Как по-другому можно решить эту задачу?что значит "возвратила?"
напечатала на экран?
код возврата который возвращает программа- на экран не печатается.. это штука которая существует только внутри командного процессора...
если надо именно ВОЗВРАТИТЬ код - то
exit код
>[оверквотинг удален]
>>
Код завершения: сначала передать, получит, завершиться им, затем его посмотреть и в конце вывести .. )))
Вещества нонча огонь! )))
Перестань по-стариковски пердеть. Я про другое очень огорчаюсь - здесь совсем перестали появляться студиозусы. И кого мы научим?
> И кого мы научим?Сейчас не учат, сейчас на тесты натаскивают. Как обычно - сделали со своим блекджеком, но сути исходной не поняли ))
ПыСы: да, я буду бздеть )))
>> И кого мы научим?
> Сейчас не учат, сейчас на тесты натаскивают. Как обычно - сделали со
> своим блекджеком, но сути исходной не поняли ))
> ПыСы: да, я буду бздеть )))есть мнение, что тесты те мне менее (например ЕГЭ) - хорошая вещь.
Не слушайте мнения, смотрите глазами на результат. Например на стобальников по рузкаму языгу к кауказа.
Получить код из stdin и с ним выйти можно как-то так
echo 111 | (read x; exit $x)Очевидно, что так делать бессмысленно. Код возврата здоровые люди используют только из специальной переменной и ни в какой ввод никому ее не передают (зачем!?).
if ! ./foo ; then
exit $?
fiИли если нужно какой-то свой код вернуть на выбор
if ! ./foo ; then
[ "$?" eq 123 ] && exit 321
[ "$?" eq 222 ] && exit 11
...
fi%%Не открывавшим даже ман по шеллу: вон из профессии.%%