Questão Lançar somente o comando se o anterior funcionou dentro do SSH, shell


Eu tenho um script SHELL que está usando um pipe para separar meus dois comandos:

ssh -oBatchMode=yes user@hostname "mysql -u yop -pyop -c yop | echo test"

O problema é mesmo se minha conexão com o MySQL não funcionar, ele faz o echo test. Eu gostaria de proibir meu script para executar qualquer comando se o comando anterior não funcionar.

Eu procuro uma solução usando if mas eu não consegui pensar em nada.


4


origem


Você realmente precisa canalizar a saída de mysql em outro comando? - Gilles Quenot


Respostas:


ssh -oBatchMode=yes user@hostname "mysql -u yop -pyop -c yop && echo test"

o && O operador executa o segundo comando se e somente se o primeiro for bem-sucedido. Você pode lê-lo como "e depois".

By the way, se você só queria executar os comandos sequencialmente, você usaria um ponto-e-vírgula ;, como em cmd1; cmd2. Um cano | executa dois comandos em paralelo com o stdout do primeiro conectado ao stdin do segundo. Não o que você quer, neste caso.


5



Oh cara eu tentei ee eu não sei porque eu esqueci o duplo e ... Obrigado pela sua resposta rápida!