Я пишу некоторый код для класса по сообщениям об ошибках, и я столкнулся со странной проблемой, которую мой учитель не мог понять. Это выглядит примерно так.
function errorCheck(){
if ! firstError $*
then
return $?
elif ! secondError $*
then
return $?
fi
, где firstError и secondError - это другие функции, которые проверяют наличие определенных ошибок. Возвращаемое значение затем подается в другую функцию, которая просто выводит текст ошибки. Те работают хорошо, я взял их с другой работы, которую я написал, и они работают. Тем не менее, когда я бегу
bash -x myFunction bad parameters
показывает, что firstError успешно возвращает код ошибки 1, как и положено, но затем внезапно переключается на возврат 0. Вот так:
+ errorCheck bad parameters
+ firstError bad parameters
+ return 1
+ return 0
+ main bad parameters
Однако, когда я жестко закодировал это так:
function errorCheck(){
if ! firstError $*
then
return 1
elif ! secondError $*
then
return 2
fi
Тогда отчет bash выглядит так:
+ errorCheck bad parameters
+ firstError bad parameters
+ return 1
+ return 1
+ errorReport 1
+ echo 'Error 1'
+ exit 1
Что я хочу, чтобы произошло. Почему возвращаемое значение внезапно переключается на 0? Пожалуйста, будьте проще, поскольку я новичок в bash.