在工作中要求时间
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
。
#!/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
。