當sqlplus與shell交互的時候我們這麼用
su - oracle -c "sqlplus / as sysdba<<EOF
select * from gv($instance);
exit;
EOF"
這個程序看起來沒什麼問題,真正執行的時候會報錯。
爲什麼?
因爲這種方式,“內容”中的東西是被解析的
所以$instance沒有值,這裏就只能看到gv
這麼寫就沒錯了
su - oracle -c "sqlplus / as sysdba<<\"EOF\"
select * from gv\$instance;
exit;
EOF"
在EOF前後加引號,並在$前加轉義字符。