我一直在到处寻找,帖子建议通过管道echo exit | sqlplus @script.sql
但我的脚本包含需要输入的 PL/SQL 语句,因此一旦输出 PROMPT
消息,exit
就会启动并且脚本退出。
这是 Linux 调用
alias sql 'sqlplus -s user/pass'
sql @test.sql
脚本执行良好,并在数据库中执行INSERT
,但执行后它只是等待我输入退出。
有什么想法吗?
最佳答案
显而易见的事情是修改脚本以在末尾添加exit
。如果您不能这样做,您可以创建一个临时文件来执行此操作,例如:
(cat test.sql && echo exit) > /tmp/test_$$.sql
sql @/tmp/test_$$.sql
rm -f /tmp/test_$$.sql
文件名中的 $$
替换为当前进程的 ID (PID),因此如果脚本同时运行两次,每次都会获得不同的文件名;然后最后将其删除。 (您可以先执行保护性删除,或者检查它是否已存在,以防先前的删除因某种原因失败)。
关于linux - SQLPlus 中的脚本后退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38860892/