2016-09-06 2 views
0

У меня есть некоторые скрипты bash, которые делают в Oracle Oracle DML. Я хотел бы поймать ошибки Oracle в файле журнала (только часть ORA-XXXXX), но в дополнение к сообщениям об ошибках Oracle на выходе я получаю содержимое каталога, из которого выполняется сценарий bash (почти как команда ls). Есть ли чистый способ получить единственный код ошибки Oracle и отключить/перенаправить содержимое каталога?Обработка ошибок Oracle в bash

#!/bin/bash 

. /path/to/configfile/config.conf 

res=`sqlplus -S $my_user << ! 
    set head off; 
    set feedback off; 

    select * from give_me_error; 

!` 

Выход из приведенного выше кода выглядит следующим образом:

выберите other_script.sh this_script.sh из give_me_error other_script.sh this_script.sh

ERROR at line 1: ORA-00942: table or view does not exist

На данный момент, лучший идея, что у меня есть grep по переменной res (см. код выше). Заранее спасибо!

P.S. Пользовательские коды ошибок не вариант в этом случае

Bash - 4.1.2 Oracle 11.2.0.4.0 EE

ответ

0

Вы можете отключить globbing:

#!/bin/bash 

. /path/to/configfile/config.conf 

# turn of globbing to prevent directory content expansion 
set -o noglob 

res=`sqlplus -S $my_user << ! 
    set head off; 
    set feedback off; 

    select * from give_me_error; 

!` 

echo $res 
# or 
printf "$res\n" 

вывод из вашей команды будет иметь фактический символ *, а не расширенный список файлов, генерируемых globbing.

+0

Очень чистое и простое решение, спасибо! –

Смежные вопросы