Como criar uma série de comandos no shell, o que irá parar a execução no erro

2

Meu fluxo de trabalho usual do git para implantação é o seguinte:

[enquanto estiver no ramo principal]

git pull
git push
git checkout production
git pull
git merge master
git push

Seria possível criar uma função para executar todos esses comandos, mas se um deles retornar um erro (ou seja, conflito de mesclagem), ele será interrompido ali mesmo?

    
por nuc 27.06.2013 / 14:28

3 respostas

6

Use & & que só irá executar o seguinte comando se o comando anterior for concluído com sucesso. $? retorna o comando status do comando mais recente.

function git_checkout()
{
 git pull && git push && git checkout production && git pull && git merge master && git push
 return $?
}
    
por 27.06.2013 / 14:41
2

A definição de -e no bash fará com que ele saia se ele vir um código de saída diferente de zero no último comando em uma cadeia de comandos.

#!/bin/bash -e
# or 'set -e'
false
echo 'I will never run!'
    
por 27.06.2013 / 14:41
1

Use ERR_EXIT , o que fará com que seu script seja encerrado em qualquer erro:

emulate -L zsh # do not change the environment outside the script

# If a command has a non-zero exit status, execute the ZERR  trap,
# if set, and exit.
setopt ERR_EXIT

cd /jhkljhlk   # <-- file does not exit and ls gives an error
echo "this will not run"
    
por 30.06.2013 / 14:41

Tags