다음 스크립트는 SSH를 통해 데이터베이스에서 정보를 얻고 sqlplus를 실행하는 데 도움이 됩니다. 확인해 보니 잘 작동하지만 유일한 문제는 SQL 쿼리에서 작은 따옴표를 사용하면 이미 ssh에서 작은 따옴표를 사용하고 있기 때문에 오류가 발생한다는 것입니다.
db_info=`${ssh_path} -qn ${ssh_host} '
DBHost="<TNS>";
$ORACLE_HOME/bin/sqlplus -s $DBUser/$DBPass@$DBHost <<EOF
set heading off feedback off verify off
Select count(*) from table_name where column = 'hell123';
quit;
EOF
'`
echo $db_info
답변1
'
다음과 같이 작성하여 이를 수행할 수 있습니다 '\''
(설명하다).
하지만 여기 문서를 사용하면 원격 호스트에서 실행되는 셸 조각을 얻는 것이 더 쉽습니다.
db_info=$("${ssh_path}" -qn "${ssh_host}" <<\END_SSH
DBHost="<TNS>";
$ORACLE_HOME/bin/sqlplus -s $DBUser/$DBPass@$DBHost <<\END_SQL
set heading off feedback off verify off
Select count(*) from table_name where column = 'hell123';
quit;
END_SQL
END_SSH
)
echo "$db_info"
답변2
고마워요 Srig. 나는 당신의 아이디어를 내 스크립트에 사용했고 훌륭하게 작동했습니다. '\''
작은따옴표 대신에 추가하면 됩니다 .
db_info=`${ssh_path} -qn ${ssh_host} '
DBHost="<TNS>";
$ORACLE_HOME/bin/sqlplus -s $DBUser/$DBPass@$DBHost <<EOF
set heading off feedback off verify off
Select count(*) from table_name where column = '\''hell123'\'';
quit;
EOF
'`
echo $db_info