Ao executar comandos com && como posso mantê-lo em execução quando um comando falha?

0

Por exemplo, eu tenho um .gitconfig para um projeto, já que faço muitas revisões de código, que dizem:

review = "!f(){ git checkout master && git pull origin master && git branch -D $1 && git fetch && git checkout $1 && git pull origin $1 && bundle install && rake db:migrate && git checkout -f; };f"

Agora eu sei que é um pouco exagerado e eu não preciso de tudo, mas eu gosto desse jeito. Isso me faz sentir como o ramo de revisão é totalmente limpo. Às vezes é bom ver a mensagem Already up-to-date.

Agora, quando a ramificação ainda não existe, então git branch -D $1 falhará e isso gerará um erro e não executará o restante dos comandos.

Existe uma maneira de executar o restante dos comandos mesmo se um dos comandos falhar?

    
por user974407 18.04.2016 / 14:41

3 respostas

6

Esse é o ponto inteiro de && - garantir que o comando anterior tenha sido bem sucedido antes de executar o próximo. Se você não precisa disso, use ; . O seguinte irá ecoar foo :

false; echo foo

E o seguinte não:

false && echo foo

Veja o manual de Bash, seção Lista de Comandos :

% bl0ck_qu0te%     
por muru 18.04.2016 / 14:43
2

Sim, basta substituir && por ; .

O comando após ; será executado independentemente do status de saída do comando antes de ; .

    
por heemayl 18.04.2016 / 14:44
1

Não use && , pois isso significa apenas completar este comando se o comando anterior foi concluído com sucesso.

Use ; , é comparável a uma nova linha e não depende do status de saída dos comandos anteriores.

    
por Arronical 18.04.2016 / 14:44