여기에서는 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
에는 다음이 포함됩니다.선행 공백여기에서 로 시작하는 문서는 종료되지 않습니다 <<EOF
. EOF
선행 공백 없이 사용하세요 . 바꾸다
EOF
당신은 사용해야합니다
EOF
또는 리디렉션을 통해 줄을 변경한 sqlplus -s test/test <<-EOF
다음 탭 들여쓰기를 사용하세요.
리디렉션 연산자가 인 경우
<<-
입력 줄과 구분 기호가 포함된 줄에서 모든 선행 탭 문자가 제거됩니다. 이를 통해 쉘 스크립트의 문서를 자연스럽게 들여쓰기할 수 있습니다.
(원천)