0
#!/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我的日志文件。你能解释一下为什么吗?

4

1 回答 1

2

它失败了,因为在你的脚本需要时at运行它的作业。shbash

您可以通过查看当前丢弃的错误来确认这一点。你会发现if条件给出了这样的结果:

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

并且由于这个失败,它会case2在被调度at而不是直接执行时写入。

使用循环或cron代替。

于 2016-07-27T18:16:52.593 回答