Ajuda na verificação da execução do comando anterior

0

Hie team,

Eu tenho que executar uma operação em um script, conectando-se ao banco de dados oracle. Eu estou tentando usar o comando expdp no meu script de shell para despejar os dados.

Vi ban.sh 

 expdp hr/oracle@oracle table=man   directory =ban dumpfile=man.dmp 
If [ $# -eq 0 ];then
  echo 'fail'
fi
If [ $# -eq 1 ];then
  echo 'pass'
fi 

No script acima, se o nome da tabela for dado errado, então o oracle expdp falhará no bloco de verificação de status no script que está passando pelo bloco "pass", mas não no bloco com falha .Como posso lidar com essa situação?

Obrigado antecipadamente.

    
por Rak kundra 16.09.2017 / 20:57

1 resposta

2

O utilitário expdp sai com um status de saída zero se

The export or import job completed successfully. No errors are displayed to the output device or recorded in the log file, if there is one. [Ref: Data Pump Exit Codes].

Caso contrário, ele terá um status de saída diferente de zero. Isso é padrão para utilitários no Unix. Zero significa "Sucesso" e também é um valor "verdadeiro" em testes booleanos.

No seu script, você deve, portanto, poder dizer

if expdp ...other options...; then
   echo 'Success'
else
   echo 'Failure'
fi

Isso significa que você fez os testes de trás para frente no seu código.

Se você quiser realmente exibir o código de saída:

expdp ...other options...
code=$?

echo "Exit code is $code"

if [ "$code" -eq 0 ]; then
   echo 'Success'
else
   echo 'Failure'
fi

Como echo mudará $? , você precisará salvar seu valor para uma nova variável logo após usar expdp .

    
por 16.09.2017 / 21:06