Lança somente o comando se o anterior trabalhou dentro do SSH, shell

4

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 é que mesmo que minha conexão com o MySQL não funcione, ele faz o echo test . Eu gostaria de proibir meu script de executar qualquer comando se o comando anterior não funcionar.

Eu procuro uma solução usando if , mas não consegui encontrar nada.

    
por GwenM 12.10.2012 / 00:54

1 resposta

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

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

A propósito, se você apenas quisesse executar os comandos sequencialmente, você usaria um ponto-e-vírgula ; , como em cmd1; cmd2 . Um pipe | executa dois comandos em paralelo com stdout do primeiro conectado ao stdin do segundo. Não o que você quer, neste caso.

    
por 12.10.2012 / 00:57

Tags