我是bash脚本的新手,正在尝试执行if语句。

我想检查一下文件的日期戳是否是现在的+或-5分钟。我到目前为止:

#!/bin/bash
MODDATE=$(stat -c '%y' test.txt)
echo moddate= $MODDATE
MODDATE=$(echo $MODDATE |head --bytes=+16)
echo now = $MODDATE

currentdate2=$(date -d "+5 minutes" '+%Y-%m-%d %H:%M')
currentdate3=$(date -d "-5 minutes" '+%Y-%m-%d %H:%M')

echo currentdate2 = $currentdate2
echo currentdate3 = $currentdate3

因此,这给了我文件的日期戳(MODDATE)和现在的日期+或-5分钟。

我该如何做一个IF语句说“如果$ MODDATE在$ currentdate2(从现在开始+5分钟)和$ currentdate3(从现在开始-5分钟)之间”,则回显[1]> output.txt ELSE echo [0]> output.txt。

预先感谢您的所有帮助

最佳答案

您如何不尝试分析stat的输出并直接使用%Y在自Epoch以来的几秒钟内直接获取其输出?这样,使用Bash的算术会更容易。

您的脚本应如下所示(带有正确的引号,现代的Bash构造和小写的变量名):

#!/bin/bash

moddate=$(stat -c '%Y' test.txt)
echo "moddate=$moddate"

now=$(date +%s)

if ((moddate<=now+5*60)) && ((moddate>=now-5*60)); then
    echo "[1]" > output.txt
else
    echo "[0]" > output.txt
fi

09-29 22:55