次のコードを検討してください。
echo hello >> log.txt
echo world >> log.txt
標準出力リダイレクトを使用してコマンドを実行します。固定リダイレクトを作成できますか?このような:
redir stdout log.txt
echo hello
echo world
stop-redir
これは最初のコード部分と同じです。
私にとって本当に必要なのは、stdoutとstderrの固定リダイレクトを同時に実行し、いくつかのコマンドを実行し、リダイレクトを停止し、ログファイルを読み取ることです。
答え1
exec 3>&1 4>&2 >log.txt 2>&1
echo hello
echo world
exec 1>&3 2>&4
less log.txt
つまり、ファイルディスクリプタ3と4の現在の1(stdout)と2(stderr)のコピーを作成し、1をlog.txtに、2を1に等しくリダイレクトし、ファイルディスクリプタでコマンドを実行します。 3と4で保存され、stdoutとstderrを復元します。