Скрипт bash не продолжается после выполнения запроса с помощью sqlplus

Скрипт bash не продолжается после выполнения запроса с помощью sqlplus

Здесь я пытаюсь выполнить обычный запрос с помощью 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и затем сделайте отступ с помощью табуляции.

Если оператор перенаправления — <<-, то все начальные символы табуляции удаляются из входных строк и строки, содержащей разделитель. Это позволяет отступам в виде естественных документов в скриптах оболочки.

(источник)

Связанный контент