verificar por "erros" ou "ORA-"

3

Eu quero verificar "erros" ou "ORA-" em $ Y. Se houver um erro, saia

Y='sqlplus -s user/passwd<< EOF
exec test_Proc;
exit;
EOF'
if [ echo $Y | awk '/ERROR/ || /ORA-/' ] ; then
  exit 1
fi

mas isso não funciona.

    
por Haadiya 21.06.2015 / 07:09

1 resposta

5

Se estiver a executar bash , pode fazê-lo com correspondência de expressões regulares:

if [[ $Y =~ (ERROR|ORA-) ]]; then
    echo error
fi

Ou, se você insistir, também pode fazer isso com awk :

if ! printf '%s\n' "$Y" | awk '/ERROR|ORA-/ {exit 1}'; then
    echo error
fi

O ponto é que awk usa expressões regulares, não a lógica de expressão da shell.

A abordagem mais simples é provavelmente usar apenas grep :

printf '%s\n' "$Y" | egrep -q 'ERROR|ORA-' && echo error
    
por 21.06.2015 / 07:25