1

我的代码总是在 ENDOFSQL 之后停止;如何解决此问题并打印最后一个回声?

#!/bin/bash

sqlplus db/pass << ENDOFSQL

@script.sql

exit;   
ENDOFSQL;

echo -e "text"
4

2 回答 2

2

您必须删除;末尾的分号ENDOFSQL;。否则,您的此处文档将延伸到文件末尾,ENDOFSQL;并且echo是此处文档的一部分

#!/bin/bash

sqlplus db/pass << ENDOFSQL

@script.sql

exit;   
ENDOFSQL

echo -e "text"

详情见Here Documents_

这里文档的格式是:

<<[-]word
        here-document
delimiter

这种类型的重定向指示 shell 从当前源读取输入,直到看到只包含单词(没有尾随空格)的行。然后将所有读取到该点的行用作命令的标准输入。

于 2013-03-05T15:08:15.520 回答
0

像这样称呼它:

#!/bin/bash

sqlplus db/pass @script.sql
echo -e "text"

确保您exit的 .sql 文件末尾有 。

于 2013-03-05T14:37:24.537 回答