如果文件不存在则退出脚本

时间:2017-10-25 07:30:58

标签: linux shell datetime unix utc

我尝试计算两个日志之间的时间差,但是当日志文件中没有日志时,unix将自己生日1970.我的脚本在下面。如果日志文件中没有日志,我想退出脚本。

#!/bin/bash
a=`tail -n 1 /var/log/nginx/error.log | awk -F" " '{print $1" "$2}' | cut -c12-20`
f=`date '+%Y-%m-%d %H:%M:%S' | cut -c12-19`
VAR1=$(date -u --date="$a sec UTC" +%s)
VAR2=$(date -u --date="$f sec UTC" +%s)
DIFF2=$(( $VAR2 - $VAR1 ))
if [ $DIFF2 -lt 59 ]; then
echo "ok"
else
echo "nok"
fi

3 个答案:

答案 0 :(得分:1)

我想如果如果日志文件中没有日志,则表示日志文件不存在或为空。您可以使用

在bash中执行此操作
logfile=/var/log/nginx/error.log
[[ -f $logfile && -s $logfile ]] || exit 1

-f测试它是一个普通文件,-s测试它不是空的。

答案 1 :(得分:1)

只检查文件是否存在或是否为空并退出代码

LOG_FILE="/var/log/nginx/error.log" [ ! -s $LOG_FILE -o ! -f $LOG_FILE ] && exit $?

答案 2 :(得分:0)

您可以使用以下方法检查文件是否存在:

if [ ! -f '/var/log/ngnix/error.log' ]
then
  exit
fi