进入sqlplus命令行后无法暂停关闭bash文件

Posted

技术标签:

【中文标题】进入sqlplus命令行后无法暂停关闭bash文件【英文标题】:unable to pause bash file from closing after entering into sqlplus command line 【发布时间】:2021-11-08 08:07:45 【问题描述】:

我正在创建一个可执行文件来基本上执行数据保护任务 我使用代码从另一个可执行文件执行该文件

putty.exe -ssh servername  -l usernsme -pw password -m C:/auotomation/dgmgrl.sh

文件中的代码是

entdexport ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/NonValidated
export ORACLE_HOSTNAME=servername
export ORACLE_SID=ERIPRD
export PATH=/u01/app/oracle/product/12.1.0/NonValidated/bin:/usr/sbin:/usr/lib64/qt- 
3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin

dgmgrl -echo << END
connect /;
show configuration 
show database ERIPRD
exit
$SHELL

我尝试在末尾添加>> 我可以通过添加 $SHELL 来暂停我的文件,但是在 dgmgrl 或 sqlplus 中我无法这样做。

【问题讨论】:

您的 here-document 缺少结尾 END,而不是 $SHELL,请尝试 bash -l 您的here document 缺少结尾单词,在您的情况下是END 【参考方案1】:

没有任何测试方法(我既没有 windows 机器也没有 oracle 服务器) - 试试这个:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/NonValidated
export ORACLE_HOSTNAME=servername
export ORACLE_SID=ERIPRD
export PATH=/u01/app/oracle/product/12.1.0/NonValidated/bin:/usr/sbin:/usr/lib64/qt- 
3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin

dgmgrl -echo << END
connect /;
show configuration 
show database ERIPRD
exit
END
bash -l

我假设 exit 是由dgmgrl 解释的,而不是shell?

【讨论】:

不,它仍然关闭我复制粘贴了这个我在 bash -l 之后添加了 $SHELL 并且它工作

以上是关于进入sqlplus命令行后无法暂停关闭bash文件的主要内容,如果未能解决你的问题,请参考以下文章

C#在'x'行后暂停流读取器输出然后继续

如何在bash命令中传递sqlplus中的变量

Linux环境Oracle相关操作命令行

找不到命令 - bash : sqlplus:

从 bash 脚本中将日期传递给 sqlplus 命令

Sqlplus oracle:如何在 1 行中在 bash 上运行 sql 命令?