#navi(../)

* 標準出力、標準エラーをexecコマンドにより指定 [#c98b86ac]
シェルスクリプトを作成し、各種メッセージをファイルに出力する場合、>>を使ってファイルに出力したりしますね。~
これを、最初に一回設定すれば良い方法を記します。~
''注意'' この設定により出力は全てファイルに出力されます。したがって、画面には出力されません。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

*関連資料 [#i9b23040]
-[[teeコマンドでstderr(標準エラー)も対象にする>逆引きUNIXコマンド/teeコマンドでstderr(標準エラー)も対象にする]]
-[[2>&1をでバックグラウンド実行の&は何処に記述する?>逆引きUNIXコマンド/2>&1をでバックグラウンド実行の&は何処に記述する?]]
-[[標準エラー出力をファイルに出力する方法>逆引きUNIXコマンド/標準エラー出力をファイルに出力する方法]]
-[[echoコマンドの出力を標準エラー(stderr)に出力する方法>逆引きUNIXコマンド/echoコマンドの出力を標準エラー(stderr)に出力する方法]]
-[[画面出力しながらファイルにも出力したい・teeコマンド>逆引きUNIXコマンド/画面出力しながらファイルにも出力したい]]


* execコマンドにより出力先の指定 [#b5bf9c64]
以下のサンプルスクリプトのように、最初にexecにより出力先を指定します。~
以下の例では、標準出力をstdout.logに標準エラーをstderr.logに出力するようにしています。~
サンプルスクリプトではdateコマンドを利用し、dateコマンドの正常終了と異常終了(標準エラーに出力される)を記述し実行してみます。

** サンプルスクリプトの説明 [#u3056567]
#ref(exec_sample.sh)
以下のサンプルは3行目のdateコマンドは正常終了、4行目のdateコマンドはオプションエラーとなります。~
サンプルスクリプト実行後、stderr.logとstdout.logファイルが作成されています。

 #!/bin/bash
 exec 2>> stderr.log 1>> stdout.log
 date
 date error  # Option error

** サンプルスクリプトを実行 [#c5c8eccb]
サンプルスクリプトに実行権限を付与し実行します。~
実行後、stdout.log, stderr.logファイルが作成されていることが確認できます。~
作成されたファイルをcatにて確認すると、出力結果が各ファイルに出力されていることが確認できます。

 $ chmod +x exec_sample.sh
 $ ./exec_sample.sh
 $ ls std*.log
 stderr.log  stdout.log
 $ cat stdout.log
 2011年  3月  3日 木曜日 12:34:56 JST
 $ cat stderr.log
 date: invalid date `error'

* 標準出力と標準エラーを同一のファイルに出力したい [#a2388f88]
標準出力と標準エラーを同一のファイルに出力したい場合は、サンプルスクリプトの2行目を以下のように変更すれば可能です。~
標準出力と標準エラーの両出力がstdouterr.logに出力されます。
 exec >> stdouterr.log 2>&1

#br
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
#br

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS