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、タブでインデントします。

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

ソース

関連情報