[解決済み】標準誤差を変数に格納する方法
質問
例えば、以下のようなスクリプトがあるとします。
useless.sh
echo "This Is Error" 1>&2
echo "This Is Output"
そして、もう1つのシェルスクリプトがあります。
alsoUseless.sh
./useless.sh | sed 's/Output/Useless/'
This Is Error"など、useless.shのstderrを変数に取り込みたいと思います。 ERRORと呼ぶことにしよう。
私が何かに標準出力を使用していることに注意してください。私はstdoutを使い続けたいので、stderrをstdoutにリダイレクトすることは、この場合、役に立ちません。
ということで、基本的には、以下のようにしたい。
./useless.sh 2> $ERROR | ...
が、これは明らかにうまくいきません。
ができることも知っています。
./useless.sh 2> /tmp/Error
ERROR=`cat /tmp/Error`
が、これは醜いし不要だ。
残念ながら、ここで答えが出なければ、そうせざるを得ないのです。
他の方法があればいいのですが。
どなたか良いアイデアをお持ちの方はいらっしゃいませんか?
解決方法は?
このようにエラーファイルを取り込むとすっきりします。
ERROR=$(</tmp/Error)
シェルはこれを認識し、''Module''を実行する必要はありません。
cat
' でデータを取得します。
もっと大きな問題は、ハードです。 簡単な方法はないと思うんです。 パイプライン全体をサブシェルに組み込んで、最終的にその標準出力をファイルに送って、エラーを標準出力にリダイレクトできるようにしなければならないでしょう。
ERROR=$( { ./useless.sh | sed s/Output/Useless/ > outfile; } 2>&1 )
セミコロンが必要なことに注意してください(古典的なシェル - Bourne、Korn - では間違いなく、おそらくBashでも同様です)。 また、'
{}
は、囲んだコマンドのI/Oリダイレクションを行います。 このように書くと
sed
を使用することもできます。
警告 形式的に未検証のコードです - 自己責任で使用してください。
関連
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] 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でjsonファイルを解析するために、jqの出力にあるダブルクオートを削除する方法は?
-
[解決済み] テスト
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] Bashで$()と`の違いはあるのでしょうか?重複] [重複
-
[解決済み] curl: 引数リストが長すぎる
-
[解決済み] 構文エラー:オペランドが期待される(エラーメッセージは "+")。
-
[解決済み] echoコマンドでパイピングが効かない [重複]。
-
[解決済み] プロジェクトからすべての .pyc ファイルを削除するにはどうすればよいですか?
-
[解決済み] Bash - "fi ;;" の使い方は?