私は次の行を実行しようとしています:パイプを使用するのがPowerShellで機能しないのはなぜですか?
exit | sqlplus username/[email protected] @test.sql
はCMDから素晴らしい作品が、PowerShellでは、私はこれがあると、私はそれをどのように修正すればよいのはなぜ
を「空のパイプ要素が許可されていません」を取得し?
私は次の行を実行しようとしています:パイプを使用するのがPowerShellで機能しないのはなぜですか?
exit | sqlplus username/[email protected] @test.sql
はCMDから素晴らしい作品が、PowerShellでは、私はこれがあると、私はそれをどのように修正すればよいのはなぜ
を「空のパイプ要素が許可されていません」を取得し?
まあ、exit
コマンドには出力がないので、パイプを渡すことはないので、空のパイプライン要素が得られます。したがって、他のコマンドにパイプする必要はありませんが、実際に実行する必要があるかどうかは疑問です。
また、cmd、exit、dirなどのシェル組み込み関数は、Powershellでは動作が異なる場合があります。エイリアスはちょうどそこに慣れるのを助けるためにある。
これはおそらく簡単です。パイプラインを通過するものがないので、あなたのステートメントは本当の意味を持ちません。あなたのコメントは全く異なる問題があることを示したよう:あなたはおそらく
sqlplus username/[email protected] @test.sql
exit
ETAを実行したいです。コマンドラインをthis answerから間違ってコピーしました。 に、 "exit"というテキストを後でパイプラインのコマンドに送る場合は、何らかの方法で出力する必要があります。これはcmdとPowershellの両方でecho
で行うことができます。だから、ここでecho
を放置しないでください。
echo
exit | sqlplus username/[email protected] @test.sql
を代わりにあなたが直接パイプラインダウン文字列として「終了」を送ることができます。
"exit" | sqlplus username/[email protected] @test.sql
奇妙な質問を。リンクされた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
に要求ごとのいくつかのサンプルスクリプトを追加することはありません、私が欲しいのは正しいです。この記事を参照してください:http://stackoverflow.com/questions/118233/run-oracle-sql-script-and-exit-from-sqlplus-exe-via-command-prompt –
基本的に、sqlplusが終了すると、標準exitコマンドを見つけて終了することを知っています。これは、スクリプトがそれ自身を終了しない状況を処理することを私が知っている最も簡単な方法です –
Erm、終了する前にエコーを入れたいと思うかもしれません... – Joey