0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

標準エラー出力(stderr)を一時ファイルを介さずに変数に入れる

Posted at

はじめに

エラーログを取りたいなどの目的で使う場合もありますが,一部のコマンド,実行ファイルではなぜか目的の出力を標準エラー出力(stderr)から出してくる場合がある.

例えば imagemagick の compare コマンドで metric の出力を得たい場合に通常のように

METRIC=`compare -metric PSNR file.png file.jpg diff.png`

などとしても metric はそのまま端末に表示されて METRIC には何も代入されない.
先述したとおり, compare コマンドの metric はどういうわけか標準エラー出力から出されるためである.

解決策

標準エラー出力のみを変数に入れたい場合は以下のようにする.

ERR="$(実行コマンド 2>1& > /dev/null)"

これで標準出力は /dev/null に捨て,エラー出力のみを ERR に代入することができる.

(なんで標準出力から結果を出さないんだよ!)

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?