Como usar aspas simples dentro do ssh e do sqlplus

1

Abaixo, o script me ajuda a fazer o ssh e o sqlplus para buscar informações do banco de dados. Eu verifiquei e funcionou bem, mas o único problema é se eu usar aspas simples na consulta SQL, então eu estou recebendo um erro desde que eu já usei aspas simples para 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
    
por JAMUNARANI S 06.01.2016 / 16:37

2 respostas

2

Você pode incluir um ' em uma cadeia de caracteres entre aspas simples escrevendo '\'' ( explicação ).

Mas seria mais fácil usar um documento aqui para o snippet de shell ser executado no host remoto.

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"
    
por 07.01.2016 / 01:55
0

Obrigado pelo Thrig. Eu usei a sua ideia no meu roteiro e funciona perfeitamente. Basta adicionar '\'' no lugar de aspas simples.

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
    
por 07.01.2016 / 12:53