LINUX.ORG.RU

Передача вывода sqlplus переменной

 , sqlplus


0

1

Доброго времени суток! Стоит задача вывести результат выполнения sqlplus на экран и передать вывод в переменную.

Делаю так:

var=(`$PATH/sqlplus -s $USER@$NAME/$PASS<<EOF 
set heading off feedback off termout off trimspool on
set linesize 15000
set long 2000
select   t2.sql_id, t1.sql_fulltext from v\$session t2, v\$sqlarea t1
where t1.sql_id=t2.sql_id and t2.process = '$PrPid'
and t2.status='ACTIVE';
EOF`)

echo $var

В результате выводится только значение select

Подскажите, пожалуйста, что делаю не так.



Последнее исправление: mmm-crash (всего исправлений: 1)

Либо `cmd` заменить на

"`cmd`"
дабы избежать word splitting, либо echo ${var[@]}, чтобы напечатать все элементы массива.

В зависимости от задачи.

tides
()
Ответ на: комментарий от tides

Не получается в обоих случаях( В первом - выводится какие-то непонятные значения логов и оракловые ошибки, во втором - выводится значение «select[@]»

mmm-crash
() автор топика
Ответ на: комментарий от mmm-crash

В первом

Убери here document в переменную, например.

во втором

по памяти писал $var[@], потом исправил на ${var[@]}, всё работает.

tides
()
Ответ на: комментарий от tides
$ echo ''te st'' |grep ''te st''

Причем тут двойной апостроф? Он является экранированием обычных кавычек, о чем ты и спрашивал

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 3)
Ответ на: комментарий от derlafff

Вот оно чо, значит a="'test"' превращается в

a="'test"'
Ну, питон не нужен, но будем знать.

tides
()

Сделай два файла. Один со скриптом, другой с запросом, тогда всё упрощается до:

var=`$PATH/sqlplus -s $USER@$NAME/$PASS < myquery.sql`

dmitryalexeeff
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.