尋找配對的“)”時出現意外的 EOF

尋找配對的“)”時出現意外的 EOF

我只是想從 sql 語句獲取輸出並將其儲存在 bash 變數中。我在尋找匹配的 `)' 時收到“意外的 EOF”錯誤。我不明白我做錯了什麼。為什麼我會收到此錯誤?

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

Ikkachu 是正確的,程式碼在不縮排的情況下應該可以在任何相當現代的 Bash 版本上正常運作。但是,我想補充一點,如果您使用“此處字串”而不是“此處文檔”,您可能會發現更容易理解和調試:

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

或者,使用標準管道:

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

相關內容