在工作中要求时间

At job asking for time

#!/bin/bash

at now +1 minutes -f ./test.sh

logFile="/home/.../testLog.txt"

time1="114000"
time2="153000"
currentTime=`date +"%H%M%S"`

echo "" >> "$logFile"
date >> "$logFile"
echo "$currentTime" >> "$logFile"
echo "" >> "$logFile"


if [[ "$currentTime" < "$time1" || "$currentTime" > "$time2" ]]
then
    echo "case1" >> "$logFile"
else
    echo "case2" >> "$logFile"
fi

此脚本保存在名为 test.sh 的文件中。例如,当我在下午 5 点执行它时,它会将 case1 写入我的日志文件。但是对于每个后续 at 调用(每分钟发生一次),脚本都会将 case2 写入我的日志文件。你能解释一下为什么吗?

失败是因为 at 使用 sh 运行其作业,而您的脚本需要 bash.

您可以通过查看当前丢弃的错误来确认这一点。您会发现 if 条件给出如下内容:

sh: cannot open 114000: No such file
sh: [[: not found
sh: 111405: not found

并且由于此失败,只要它被 at 安排而不是直接执行,它将写入 case2

改用循环或 cron