Como dar saída na conclusão bem-sucedida do comando?

0

Eu estou meio preso com o script abaixo, onde eu gostaria de dar uma mensagem sobre a conclusão bem sucedida do comando, mas, ao mesmo tempo, se o seu não for bem sucedido, então deve seguir em frente.

Temos servidores Oracle e os bancos de dados abaixo são servidores rac de 3 nós. O que eu gostaria de arquivar é quando eu desligar a instância no nó 1 digamos, TEST11 não mostra a saída após a conclusão bem-sucedida do comando. Senão, ele vai lançar um erro, então eu gostaria de registrar esse erro em um arquivo e, assim como ecoar se foi bem-sucedido ou com erro.

for DBI  in TEST11 TEST21 TEST31 TEST41
do
DB=$(echo -n $DBI | head -c -1)
echo $DB
export ORACLE_SID=$DBI
export ORACLE_HOME='grep "^${DBI}:" /etc/oratab | cut -d: -f2 -s'
$ORACLE_HOME/bin/srvctl stop instance -d $DB -i $DBI
done

Obrigado MohammedDBA

    
por Mohammeddba 15.05.2018 / 05:19

1 resposta

1

No bash $? , você obtém o código de retorno do comando anterior. Se o comando anterior foi bem sucedido, o código de retorno é zero diferente de zero.

No exemplo a seguir, estou procurando uma string em um arquivo com caso de sucesso e falha. Você pode usar essa lógica no seu script.

Conteúdo do meu script test.sh

grep "grapes" file1 > /dev/null

if [ $? -eq 0 ]
then
    echo "Success. Perform success action"
elif [ $? -ne 0 ]
then
    echo "Failure.. Do Failure action"
fi

A seguir, a execução da amostra:

#cat file1
apple
grapes

#sh test.sh
Success. Perform success action


#cat file1
apple

#sh test1
Failure.. Do Failure action
    
por 15.05.2018 / 06:03