Oracle 데이터베이스에 연결하고 쿼리를 트리거하고 출력을 변수에 할당하고 있는데 변수 값을 에코하면 올바르게 인쇄되지 않습니다.
count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
set pagesize 0 feedback off verify off heading off echo off;
select max(cust_id) from cutomers
exit;
END`
echo $count
쿼리는 데이터베이스에서 트리거될 때 올바른 결과를 반환합니다. 그러나 "count" 변수의 값이 올바르지 않습니다.
답변1
here-doc를 끝내는 단어는 줄의 유일한 문자여야 합니다. 들여쓰기는 허용되지 않습니다. 또한 $()
대신 역따옴표를 사용하세요. 중첩 가능합니다.
count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
set pagesize 0 feedback off verify off heading off echo off;
select max(cust_id) from cutomers
exit;
END
)
echo $count
http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents
답변2
OUTPUT=$( ${OracleClientHome}/sqlplus -S user/pass@database <<EOF
set pagesize 0 linesize 32767 feedback off verify off heading off echo off
select a1.id || '|' ||
a1.stmt_begin_date || '|' ||
a1.stmt_end_date || '|' ||
a1.status || '|' ||
a1.total_recs
from acct_stmt_file a1
where a1.actp_cd = 'HSA'
and a1.stmt_begin_date =trunc(sysdate);
exit;
EOF
)
echo -e "\n${OUTPUT}"
답변3
count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
set pagesize 0 feedback off verify off heading off echo off
select max(cust_id) from cutomers;
exit;
END`
echo $count
올바른 위치에 세미콜론을 사용해야 합니다.