sqlplusを使用してクエリを実行した後、bashスクリプトは続行されません。

sqlplusを使用してクエリを実行した後、bashスクリプトは続行されません。

ここでは、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には以下が含まれます。先行スペースここで始まる文書は終了しません<<EOFEOF先行スペースなしで使用してください。変える

    EOF

使用する必要があります

EOF

または、リダイレクトを介して行を変更し、タブインデントを使用しsqlplus -s test/test <<-EOFます。

リダイレクト演算子の場合、<<-入力行と区切り文字を含む行からすべての先行タブ文字が削除されます。これにより、シェルスクリプトのドキュメントを自然にインデントできます。

源泉)

関連情報