このエントリーをはてなブックマークに追加


標準出力、標準エラーをexecコマンドにより指定

シェルスクリプトを作成し、各種メッセージをファイルに出力する場合、>>を使ってファイルに出力したりしますね。
これを、最初に一回設定すれば良い方法を記します。
注意 この設定により出力は全てファイルに出力されます。したがって、画面には出力されません。


関連資料

execコマンドにより出力先の指定

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

サンプルスクリプトの説明

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

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

サンプルスクリプトを実行

サンプルスクリプトに実行権限を付与し実行します。
実行後、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'

標準出力と標準エラーを同一のファイルに出力したい

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

exec >> stdouterr.log 2>&1
 

 

添付ファイル: fileexec_sample.sh 935件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:26:52