SSHとsqlplusで一重引用符を使用する方法

SSHとsqlplusで一重引用符を使用する方法

次のスクリプトは、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

関連情報