here 文档之嵌套

我们有如下脚本:

su - oracle <<EOF

echo '................................1'

sqlplus -S / as sysdba <<HAHA
spool '/tmp/db_info.log'
select 'good' from dual;
spool off
quit;
HAHA

echo '................................2'

pdbname=$(cat /tmp/db_info.log|grep service_names|grep -v select|awk '{print $2}')

echo '................................3'

EOF

我们期望的结果是这样的,先输出1,然后执行SQL语句,再输出2,最后执行cat命令输出3:

................................1

'GOO
----
good

................................2
................................3

但实际结果是这样的:

cat: /tmp/db_info.log: No such file or directory
................................1

'GOO
----
good

................................2
................................3

解决办法是,将第一个 EOF 变为 'EOF'

-- By 许望(RHCA、OCM、VCP)
最后修改:2021 年 12 月 31 日 02 : 30 PM
如果觉得我的文章对你有用,请随意赞赏