我是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