спутать об этом на некоторое время, вот дистиллированная скрипт, который представляет собой проблему:Bash сценарий продолжается, даже если я хочу, чтобы выйти раньше
#start
# note that master does not exist, so this should fail, would like to exit on the next line
git branch -D master || (echo "no master branch" && exit 1);
git fetch origin &&
git checkout master &&
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "$BRANCH" != "master" ]]; then
echo 'Aborting script because you are not on the right git branch (master).';
exit 1;
fi
echo "done"
#end
когда я бегу выше сценарий, я получаю этот выход :
error: branch 'master' not found.
no master branch
error: Your local changes to the following files would be overwritten by checkout:
publish-to-NPM.sh
Please, commit your changes or stash them before you can switch branches.
Aborting
Aborting script because you are not on the right git branch (master).
Обратите внимание, что «сделано» не получает вторит, поэтому скрипт делает выход на второй выход 1 вызов. Но почему сценарий не выходит из первого вызова выхода 1? Так запутался.
похоже, что это может ответить на вопрос - http://stackoverflow.com/questions/3822621/how-to-exit-if-a-command-failed –