%E2%80%9D%E6%99%82%E5%87%BA%E7%8F%BE%E6%84%8F%E5%A4%96%E7%9A%84%20EOF.png)
我只是想從 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)