我想在 shell 腳本中讀取日志檔案時檢查錯誤,如果有一些錯誤,我希望它回顯“請檢查錯誤”并將其輸出到檔案中,但問題是它是否列印了很多錯誤請檢查每個錯誤的錯誤,
例如:如果檔案中有 5 個錯誤,它會列印 5 次“請檢查錯誤”,如下所示:
請檢查錯誤 請檢查錯誤 請檢查錯誤 請檢查錯誤 請檢查錯誤
無論發現多少錯誤,我都希望它只列印 1 行。
**
FILE=/home/user/logs/file.log
if [ ! -f $FILE ]
then echo 'No File Exists' > /home/user/error.txt
else tail $FILE | \
while read line ; do
echo $line | grep -i "error"
if [ $? = 1 ]
then echo Please check Errors in: $FILE > /home/user/error.txt
fi
done
fi
**
uj5u.com熱心網友回復:
你有基本的想法,你只需要重新安排一下。首先確認是否存在錯誤grep -q 'error' "$FILE",如果存在錯誤,則寫入"Please check Errors"提示并輸出包含錯誤的行。
為什么不:
if grep -qi 'error' "$FILE"; then
printf "Please check Errors in %s\n" "$FILE"
grep -i 'error' "$FILE"
fi
沒有回圈,也沒有呼叫grep回圈的每次迭代。只需呼叫一次grep -q以檢查是否"error"存在,然后輸出您的標題和包含"error"第二次呼叫的每一行grep。
如果要將輸出寫入檔案,只需將所有輸出重定向到新檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/466160.html
下一篇:Bash腳本轉換為魚
