У меня есть сценарий удара, в который я проверяю код выхода последней команды выполнения при помощи $? переменная, но теперь я выполняю программу C (из того сценария), который возвращается 0, если программа выполнена успешно. Есть ли какой-либо способ, от которого я могу поймать это возвращаемое значение программы C с в моем сценарии удара?
Я полагаю, что различные команды как awk, sed и т.д. записаны в C. Как они используют $? сохранить их коды выхода в нем? Как я могу сделать свою программу C для хранения ее кода выхода в $??
Я надеюсь, что мой вопрос ясен.
Нет необходимости делать что-либо - если ваша программа на C вернет 0, это то, что будет сохранено в переменной $?
оболочка, которая его выполнила.
Код возврата программы на языке Си - это значение, возвращаемое функцией int main()
или аргумент функции exit()
. Затем система делает его доступным для родительского процесса через системный вызов wait()
. Если родительским процессом является bash
, это значение становится доступным через переменную $?
.
bash автоматически перехватывает код выхода в $?
. Или вы можете просто использовать команду из if
, если вас интересует только ноль / ненулевое значение.