私はbashスクリプトを書いています。それはいくつかのエコーステートメントを持っています。これは、いくつかのサードパーティのツールを呼び出します。 stdoutに行くすべてのもの(私のecho文とすべてのツールの出力から)をstderrにリダイレクトしたいと思います。それ、どうやったら出来るの?bashスクリプトの出力をstderrにリダイレクトするには
答えて
コマンドのstdoutをstderrにリダイレクトする必要があります。スクリプト内からこれを実行したい場合は、一つの関数の中にあなたの全体のスクリプトをラップし、標準エラー出力に出力をリダイレクトすることができ
your_command.sh 1>&2
:
main() {
echo hello
echo world
some_script.sh
}
main 1>&2
exec >&2
でそれを入れて将来のすべての出力をstderrにリダイレクトするスクリプトの先頭。私のために働いたソリューションは、()の中にスクリプトのテキストを囲み、そのように標準エラー出力に標準出力をリダイレクトすることでした
$ help exec
exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
Replace the shell with the given command.
Execute COMMAND, replacing this shell with the specified program.
ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,
any redirections take effect in the current shell.
シンプル!出力をstdoutとstderrの両方に移動させたいとしますか? –
これはツールからの出力をリダイレクトしません –
確かにそうです。すべてのコマンドに影響します。 –
:
( echo 1 echo 2 tool1 ) 1>&2
curliesで試してみてください。 '{...}>&2' –
- 1. Bashの子スクリプトの出力をリダイレクト
- 2. stderrとstderrをリダイレクトしながら、bashの別のファイルにstderrをコピーする
- 3. Bashで出力をリダイレクトするには
- 4. bashスクリプトでstdoutとstderrのリダイレクトをテストする
- 5. 子プロセスの出力をstderrにリダイレクトする方法は?
- 6. stdoutとstderrのログがどこにあるbashスクリプトで検出するには?
- 7. PHPはbashスクリプトを実行し、出力をデータベースにリダイレクトします
- 8. 出力をBASHの別のディレクトリにリダイレクトする方法は?
- 9. コマンドを出力するbashスクリプトの出力をクリーンアップするには
- 10. すべてのstderrをbashでリダイレクトする方法は?
- 11. bashスクリプトまたはbash -cの出力に色を表示
- 12. bashスクリプト出力をjsonに変換するには
- 13. raw_inputを標準出力ではなくstderrにリダイレクトする方法
- 14. bashスクリプトのIBAlert出力
- 15. Bashスクリプトの出力htaccessファイル
- 16. リダイレクトbashの出力は10秒ごと
- 17. プログラムのNUL出力をbashスクリプトに保存する方法は?
- 18. pythonでは、print関数の出力をstderrにリダイレクトできますか?
- 19. bashのSTDERRにリダイレクトする3つの方法の違いは何ですか?
- 20. Bashスクリプトをファイルにgrepして別のファイルに出力する
- 21. pythonスクリプトのcmd出力をファイルにリダイレクトする方法は?
- 22. スクリプトを閉じた後に端末でbashスクリプトの出力を隠すには?
- 23. は、出力はbashスクリプトで変数
- 24. stdoutとstderrの両方をScalaの出力ストリームにリダイレクトします
- 25. .NETのCOMオブジェクトラッパーからSTDERR出力をリダイレクト
- 26. スクリプト内でSTDERRをリダイレクトする方法は?
- 27. bashスクリプトの出力にログレベルを選択する方法
- 28. スクリプト内のstderrをリダイレクトしてプレフィックスを追加する
- 29. Bash:出力をstderrとstdoutの両方に送り、別のコマンドにパイプする方法は?
- 30. サブプロセスstderrをstdoutにリダイレクト
だから、何かのような? echo hello 1>&2また、これは(>&2 echo helloと同じです) –
@PhilOはい、リダイレクション演算子は、コマンドラインを呼び出す前にシェルが識別して削除するため、コマンドラインのどこにでも(ほぼ)表示できます。あなたの例のように、単純なコマンドの名前の前に置くこともできますが、 'while'、' for'、 'if'などの複合コマンドの後に表示する必要があります。' echo 1>&2 hello'も同様に動作します。 – chepner