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

このタイプのリダイレクトは、単語のみを含む行(末尾の空白なし)が表示されるまで、現在のソースからの入力を読み取るようにシェルに指示します。その時点までに読み取られたすべての行は、コマンドの標準入力として使用されます。

于 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 に答える