Hi.Adachinです。
本日は標準出力と標準エラー出力についてです。
ちょいと先輩に突っ込まれて&パニクったのでブログします。
しかも毎回忘れがちなので自分なりにまとめやした( ー`дー´)キリッ
これを脳に叩き込めばlinux力あるね!と言われるので頑張りましょう(・∀・)
ちなみにシェルによって違うので今回はbashのみのまとめとなります。
■標準出力とは
画面に出力する文字列のこと(実行結果)
1 2 |
#!/bin/bash echo 'adachin' |
■標準エラー出力とは
シェルで実行するとエラーメッセージが出ること
1 |
-bash: s: command not found |
■標準エラー出力として出力する場合
1.その前にファイルディスクリプタとは
0:標準入力(stdin)、1:標準出力(stdout)、2:標準エラー出力(stderr)
2.あとリダイレクト[>]とは
1 |
command ファイル・ディスクリプタ 出力先 |
を!覚えましょう!
で、標準エラー出力として出力する場合は
1 2 |
#!/bin/bash echo 'error adachin' |
・1>&2とは
1の出力先を2の出力先と同じものに設定するという意味
例だと
「adachin>&dachin」は「adachin の出力先をdachinの出力先と同じものに設定する」
■標準エラー出力のみ出力する
ややこしいですが、さっきのは標準出力を標準エラー出力として出力する場合です。
今回は標準出力は関係ありません。
1 2 3 |
#!/bin/bash command /dev/null this is error. |
※ちなみに
/dev/nullはunixのスペシャルファイルで空ファイル
■いろいろな例
・リダイレクトなし
1 2 |
#!/bin/bash adachin |
標準出力 : 画面
標準エラー出力 : 画面
・標準出力のみファイルにリダイレクトする場合
1 2 |
#!/bin/bash command hogefile |
標準出力 : file
標準エラー出力 : 画面
・標準出力と標準エラー出力2つともファイルにリダイレクトする場合
1 2 |
#!/bin/bash command 1>hogefile 2>&1 |
・流れ
標準出力 : file
標準エラー出力 : file
↓
標準出力 : file
標準エラー出力 : 画面
↓ 2>&1が処理されるため2の出力先を1の出力先と同じに設定
標準出力 : file
標準エラー出力 : file
■まとめ
ここらへんを理解出来ていれば
スクリプト作るときに何も困らないはず!(・∀・)b
参考:http://qiita.com/yukotan/items/749de95af895e23a2114
http://www.creatology.jp/unix/outin.html
0件のコメント