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'