неожиданный EOF при поиске соответствия `)'

неожиданный EOF при поиске соответствия `)'

Я просто пытаюсь получить вывод из SQL-выражения и сохранить его в переменной Bash. Я получаю ошибку " unexpected EOF while looking for matching `)' ". Я не вижу, что я делаю неправильно. Почему я получаю эту ошибку?

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

решение1

Ваш скрипт отступлен так же? Разделитель для here-doc должен быть в начале строки. У меня это работает:

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

решение2

Иккачу прав, что код, если не отступ, должен нормально работать на любой достаточно современной версии Bash. Однако я бы добавил, что вам может быть проще понимать и отлаживать его, если вы используете "строку here" вместо "документ here":

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

Или используйте стандартный конвейер:

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

Связанный контент