Как вернуться из функции поиска в исходный код? - PullRequest
1 голос
/ 15 февраля 2012

Рассмотрим foo.sh:

#!/bin/bash
function foo() {
   source another.sh
   echo "This shouldn't be executed. Return code: $?"
   return 0
}

foo
echo "Return code: $?"

Тогда еще один .sh:

echo "Inside another.sh"
return 1

Работает ./foo.sh печатает:

Inside another.sh
This shouldn't be executed. Return code: 1
Return code: 0

Есть ли альтернативаспособ включить исходный файл в другой, чтобы команда return возвращалась из функции, содержащей команду include, а не из самой команды?

1 Ответ

1 голос
/ 15 февраля 2012

Один из вариантов: передать код возврата в foo.sh:

source another.sh || return $?

Затем:

$ ./foo.sh
Inside another.sh
Return code: 1

В качестве альтернативы, выйти изВесь сценарий в другом .sh:

exit 1

Тогда:

$ ./foo.sh
Inside another.sh
$ echo $?
1
...