EOF inesperado ao procurar por correspondência `)'

EOF inesperado ao procurar por correspondência `)'

Estou simplesmente tentando obter a saída de uma instrução sql e armazená-la na variável bash. Estou recebendo o erro "EOF inesperado ao procurar o erro `)' correspondente. Não vejo o que estou fazendo de errado. Por que estou recebendo esse erro?

var=$($ORACLE_HOME/bin/sqlplus / as sysdba <<EOF  
select status from v\$instance;
exit;
EOF
)

Responder1

O seu script está recuado assim? o delimitador do here-doc deve estar no início da linha. Isso funciona para mim:

#!/bin/bash
echo $(cat <<EOF
blah
EOF
)

Responder2

Ikkachu está correto ao dizer que o código, quando não recuado, deve funcionar bem em qualquer versão razoavelmente moderna do Bash. No entanto, eu acrescentaria que você pode achar mais fácil entender e depurar se usar uma "string aqui" em vez de um "documento aqui":

var=$(sqlplus / as sysdba <<< 'select status from v$instance; exit;')

Ou use um pipeline padrão:

var=$(echo 'select status from v$instance; exit;' | sqlplus / as sysdba)

informação relacionada