2009-06-29 9 views

答えて

5

まあ、exitコマンドには出力がないので、パイプを渡すことはないので、空のパイプライン要素が得られます。したがって、他のコマンドにパイプする必要はありませんが、実際に実行する必要があるかどうかは疑問です。

また、cmd、exit、dirなどのシェル組み込み関数は、Powershellでは動作が異なる場合があります。エイリアスはちょうどそこに慣れるのを助けるためにある。

これはおそらく簡単です。パイプラインを通過するものがないので、あなたのステートメントは本当の意味を持ちません。あなたのコメントは全く異なる問題があることを示したよう:あなたはおそらく

sqlplus username/[email protected] @test.sql 
exit 

ETAを実行したいです。コマンドラインをthis answerから間違ってコピーしました。 に、 "exit"というテキストを後でパイプラインのコマンドに送る場合は、何らかの方法で出力する必要があります。これはcmdとPowershellの両方でechoで行うことができます。だから、ここでechoを放置しないでください。

echoexit | sqlplus username/[email protected] @test.sql

を代わりにあなたが直接パイプラインダウン文字列として「終了」を送ることができます。

"exit" | sqlplus username/[email protected] @test.sql 
+0

に要求ごとのいくつかのサンプルスクリプトを追加することはありません、私が欲しいのは正しいです。この記事を参照してください:http://stackoverflow.com/questions/118233/run-oracle-sql-script-and-exit-from-sqlplus-exe-via-command-prompt –

+0

基本的に、sqlplusが終了すると、標準exitコマンドを見つけて終了することを知っています。これは、スクリプトがそれ自身を終了しない状況を処理することを私が知っている最も簡単な方法です –

+1

Erm、終了する前にエコーを入れたいと思うかもしれません... – Joey

2

奇妙な質問を。リンクされたSOの投稿とOracle documentationによると、SQLPlusがファイルの読み込みを完了した後、単にスクリプト環境に制御を戻そうとしているようです。

CMDとは異なり、 'exit'は言語キーワードではありません。これはスクリプト環境への指示です。 (あなたは 'gcm exit'を実行することで自分自身で見ることができます - 何も見つかりません)。だから私はこれがうまくいかないことには驚かない。

オラクルのマニュアルの示唆しているように、入力ストリームの最後にEOF文字を追加してみませんか? Windowsでは^ Z(Ctrl + Z、ASCII 0x1A)になります。または、本当に必要な場合は、 'exit'というテキストを挿入することができます。

これを実行するには、ディスク上のファイルを変更するか、ファイルをストリームに読み込み、|あなたの状況に合ったものを選択してください。

編集:コメント

# add EOF to file on disk 
[char]0x1a >> test.sql 
sqlplus username/[email protected] @test.sql 

# add 'exit' to file on disk 
'exit' >> test.sql 
sqlplus username/[email protected] @test.sql 

# add 'exit' in-memory 
# assumes sqlplus reads from stdin as shown in other examples; don't have Oracle to test 
(gc test.sql) + 'exit' | sqlplus username/[email protected] 

# wrapper function 
function Invoke-SqlPlus($file) { (gc $file) + 'exit' | sqlplus username/[email protected] } 
new-alias sql Invoke-SqlPlus 
# usage 
sql test.sql 
+0

確かに、私はそれをすることができましたが、それは単純な自動化のための多くの面倒です!私は、ファイルをメモリに読み込んで追加する方法、そしてsqlplusでうまくいく方法を学ぶ必要があります。うまくいけば、私は2時間以内にこれを行うことができる方法があります。 –

+0

<演算子はPowershellで使用できません。ファイルをプログラムの標準入力にリダイレクトするには、おそらくGet-Contentとパイプラインを使用する必要があります。 – Joey

+0

ジョージ:おそらく[char] 0x1a >> test.sqlを実行して、最後にEOF文字を取得できます。 – Joey

関連する問題