alexandregms
(usa Ubuntu)
Enviado em 16/07/2011 - 20:05h
Bom, vc quer saber se um comando foi ou não executado com sucesso, certo?
Já usei bastante isso pra inserir scripts no Control-M que necessita de uma resposta "ok" ou "erro".
Para isso teremos que realizar um teste para cada ação executada, o comando "echo $?" retornará 0 (zero) para "execução OK" e diferente de 0 (zero) para erro. Tendo isso, vamos por em prática:
Exemplo para validar se um diretório existe:
test -d /usr/xyz
if [ $? -ne 0 ]; then
echo "Diretorio nao encontrado"
exit 1 # encerrar o script
fi
Exemplo para verificar se o processo httpd está em execução:
ps -ef | grep httpd | grep -v grep
if [ $? -eq 0 ]; then
echo "Processo httpd em execução"
else
echo "Processo httpd não está em execução"
exit 1 # encerrar o script
fi
Agora é só seguir a lógica para quaisquer comandos! Isso é extremamente útil para evitar graves erros em scripts!
Há muitos scripts hoje sem essas condições e geram diversos falsos/positivos, pois ele roda normalmente, mas um ou mais comandos pode(m) não ser executado(s). Isso em rotinas de backup é grave, pois vc pode achar que os arquivos estão sendo copiados, mas não realidade não estão.
Quando vc usa o comando "mv" ou "rm" em scripts deve-se tomar cuidado para que os arquivos movidos ou deletados não sejam outros. O "echo $?" pode salvar sua vida em vários momentos, acostume-se sempre a usá-lo!!!
Boa sorte!!