Проверка возвращаемого значения программы на C в скрипте bash? - PullRequest
5 голосов
/ 22 февраля 2010

У меня есть скрипт bash, в котором я проверяю код завершения последней команды запуска, используя $?переменная, но теперь я выполняю программу на C (из этого скрипта), которая возвращает 0, если программа выполняется успешно.Есть ли способ, как я могу поймать это возвращаемое значение программы на C с помощью в моем bash-скрипте?

Я считаю, что различные команды, такие как awk, sed и т. Д., Написаны на C. Как они используют $?хранить свои коды выхода в нем?Как я могу заставить свою программу на С хранить код завершения в $ ??

Надеюсь, мой вопрос понятен.

Ответы [ 3 ]

12 голосов
/ 22 февраля 2010

Ничего не нужно делать - если ваша программа на C возвращает 0, это то, что будет сохранено в переменной $? оболочки, которая ее выполнила.

1 голос
/ 22 февраля 2010

Код возврата программы на C - это значение, возвращаемое функцией int main() или аргументом функции exit(). Затем система делает его доступным для своего родительского процесса посредством системного вызова wait(). Когда родительский процесс имеет значение bash, это значение становится доступным через переменную $?.

1 голос
/ 22 февраля 2010

bash автоматически перехватывает код выхода в $?. Или вы можете просто использовать команду в if, если вас волнует только ноль / не ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...