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다음을 포함 하는 행선행 공백로 시작된 here 문서를 종료하지 않습니다 <<EOF. EOF선행 공백 없이 사용하십시오 . 대신에

    EOF

당신은 사용해야합니다

EOF

또는 리디렉션을 사용하여 행을 변경한 sqlplus -s test/test <<-EOF다음 탭으로 들여쓰기합니다.

리디렉션 연산자가 인 경우 <<-모든 선행 탭 문자가 입력 줄과 구분 기호가 포함된 줄에서 제거됩니다. 이를 통해 쉘 스크립트 내의 여기 문서를 자연스러운 방식으로 들여쓰기할 수 있습니다.

(원천)

관련 정보