
Здесь я пытаюсь выполнить обычный запрос с помощью sqlplus и вывести результат в CSV-файл, затем у меня есть еще одна работа, которую нужно выполнить. Я столкнулся с проблемой: мой скрипт не продолжается после выполнения запроса sqlplus, он просто просматривает результат и выводит вывод в CSV-файл, но не продолжает работу. Кроме того, я не знаю, как вывести данные, не просматривая результат.
#!/bin/bash
cd /dir/test_dir
sqlplus -s test/test <<EOF
set colsep ,
set underline off,
set headsep off,
set feedback off,
set long 99999,
set linesize 32767,
set trimspool on,
spool report(date +%Y-%m-%d).csv
select a.s, a.d, a.t, a.ww, a.tt from test a;
exit;
EOF
cd ../
mkdir test/
.
.
.
решение1
Строка, содержащая EOF
сведущие пробелыне завершает документ here, начатый с <<EOF
. Используйте EOF
без начальных пробелов. Вместо
EOF
вам следует использовать
EOF
Либо измените строку с перенаправлением на sqlplus -s test/test <<-EOF
и затем сделайте отступ с помощью табуляции.
Если оператор перенаправления —
<<-
, то все начальные символы табуляции удаляются из входных строк и строки, содержащей разделитель. Это позволяет отступам в виде естественных документов в скриптах оболочки.
(источник)