LINUX.ORG.RU

Как выйти из программы?

 


0

2

В общем есть функция:

test_func() {
   #что-то делается
   echo что-то выводится
   #опять делается
   return 0;
}

exit $(test_func)

Получаю ошибку exit: Illegal number: что-то выводится

Как выйти с программы с кодом который возвращает функция?


test_func
exit $?
anonymous
()

В шелле при выполнении ф-ции возвращется вывод echo в stdout. Очень странное поведение, но факт. Если в stdout не принципиально, то должно работать:

test_func() {
   #что-то делается
   echo что-то выводится >&2
   #опять делается
   echo 3;
}

exit $(test_func)

# bash test.sh
что-то выводится
# echo $?
3

nanosleep2
()
Ответ на: комментарий от anonymous

а есть ли смысл в конце писать exit $? если мы и так уже должны получить код ошибки после выхода?

warini
() автор топика
Ответ на: комментарий от warini

особо нет, для точности разве что

anonymous
()

exit $(test_func)

exit имеет необязательный _числовой_ параметр.

В данном случае параметр не нужен. И exit тоже.

test_func() {
   #что-то делается
   echo что-то выводится
   #опять делается
   #return 0# тоже не нужно, ну или
   return # выход с кодом ошибки прошлой команды.
}

test_func
emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.