Linux シェル,実行結果(成功・エラー)を、ファイル別に記録

スポンサーリンク

鍛錬 92

Linux シェルスクリプト,実行結果(成功・エラー)を、ファイル別に記録する

コマンドの実行結果を、成功時とエラー時で分けて別ファイルに記録するには、標準エラー出力を使用します。
 
使用方法は、以下に示す通りです。

コマンド >> 成功時のファイル 2>>エラー時のファイル
スポンサーリンク

シェルスクリプト

以下は、コマンドの実行結果について、成功時とエラー時で分けて別ファイルに記録するシェルスクリプト、divide_log.sh です。

今回は、1回目のコマンドとして date コマンドを実行して成功させ、2回目のコマンドとして cat で存在しないファイル ABC.txt を表示しようとしてエラーを発生させています。

成功時とエラー時に書き込むファイル名は、次の通りです。

結果 ファイル名
成功した場合 log.txt
エラーの場合 error_log.txt
#!/bin/sh

# 成功(log.txtに記録)
date >> log.txt 2>>error_log.txt
ret=$(echo $?)
echo "1回目の実行結果 = $ret"

# エラー(error_log.txtに記録)
cat ABC.txt >> log.txt 2>>error_log.txt
ret=$(echo $?)
echo "2回目の実行結果 = $ret"
スポンサーリンク

実行結果

以下は、シェルスクリプト divide_log.sh を実行しています。

***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ls
divide_log.sh
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./divide_log.sh
1回目の実行結果 = 0
2回目の実行結果 = 1
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ls
divide_log.sh  error_log.txt  log.txt
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ cat log.txt
Mon May 27 22:28:52 JST 2019
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ cat error_log.txt
cat: ABC.txt: そのようなファイルやディレクトリはありません

 
上記に示した通り、成功時とエラー時で分けて、ファイル別に出力することができました。

タイトルとURLをコピーしました