シェルスクリプトでstdoutとstderrを2つの異なるプロセスにパイプする?
2023-11-04 14:20:07
質問
パイプラインで
command1 | command2
つまり、コマンド1の標準出力はコマンド2へ、コマンド1の標準出力はターミナル(またはシェルの標準出力がある場所)へ行くということです。
command1のstderrを第3プロセスにパイプするにはどうすればよいのでしょうか(
command3
) にパイプし、stdout はコマンド 2 に送ることができますか?
どのように解決するのですか?
別のファイルディスクリプタを使用する
{ command1 2>&3 | command2; } 3>&1 1>&2 | command3
他のファイルディスクリプタは3から9までの7つまで使用可能です。
もし、もっと説明が必要なら、質問してください。)
テスト
{ { echo a; echo >&2 b; } 2>&3 | sed >&2 's/$/1/'; } 3>&1 1>&2 | sed 's/$/2/'
を出力します。
b2
a1
例
ログファイルを2つ作成する。
1.
stderr
のみ
2.
stderr
と
stdout
{ { { command 2>&1 1>&3; } | tee err-only.log; } 3>&1; } > err-and-stdout.log
もし
command
が
echo "stdout"; echo "stderr" >&2
であれば、そのようにテストすることができます。
$ { { { echo out>&3;echo err>&1;}| tee err-only.log;} 3>&1;} > err-and-stdout.log
$ head err-only.log err-and-stdout.log
==> err-only.log <==
err
==> err-and-stdout.log <==
out
err
関連
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える
-
[解決済み] シェルスクリプトからエコーを使わずにパスワードを取得する方法
-
[解決済み] bashで変数に改行を埋め込もうとする [重複].
-
[解決済み] 実行中のBASHスクリプトのパスを決定する [重複].
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] bash に次の行に進むように指示する方法
-
[解決済み] シェルスクリプトで文字列が空でもスペースでもないことをチェックする
-
[解決済み] set -u` による Bash による空の配列展開
-
[解決済み] bashを使って関数の出力を変数に代入するにはどうすればよいですか?
-
[解決済み] Bashはどのように異なるディレクトリコンテキストでコマンドを実行できますか?
-
[解決済み] 空のディレクトリの検索
-
[解決済み] シェルのワイルドカード文字展開を停止しますか?
-
[解決済み] ファイルツリー図の作成に使用するツールについて【終了しました
-
[解決済み] bashのifブロックの中でboolean変数を評価する方法は?重複
-
[解決済み] Bashでforループを書くには?