質問事項
指定のディレクトリ (target_dir) にあるlogファイルから "Error" という文字列が含まれる行を抽出してきたファイル (error.log) を作り、このファイルが空なら "OK"、空でないなら "NG" というスクリプトを作っています。bashでset -e
を付けていると、if文の部分がうまく動きません。ファイルが空でない場合はきちんと動くのですが、ファイルが空の場合の処理が実行されないのです (実行すると何も表示されずに終わる)。何がおかしいのかわからず質問いたしました。よろしくお願いいたします。
該当のソースコード
bash
1#!/usr/bin/env bash 2 3set -e 4 5grep Error ./target_dir/*.log > error.log 6 7if [ -s error.log ]; then 8 echo "NG" 9else 10 echo "OK" 11fi
試したこと
grepでerror.logを作らず、単にerror.logを用意するとうまくいきます。
bashのバージョン
bash
1$ bash --version 2GNU bash, バージョン 4.2.46(2)-release (x86_64-redhat-linux-gnu) 3Copyright (C) 2011 Free Software Foundation, Inc.
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/16 07:56