在工作要求时间

时间:2016-07-27 16:20:37

标签: bash if-statement time at-job

#!/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写入我的日志文件中。你能解释一下原因吗?

1 个答案:

答案 0 :(得分:2)

它失败了,因为at在您的脚本需要sh的情况下使用bash运行其作业。

您可以通过查看您当前正在丢弃的错误来确认这一点。您发现if条件的结果如下:

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

由于此失败,只要case2安排at而不是直接执行,就会写cron

使用循环或class Report < ActiveRecord::Base has_many :icons, -> { order 'position_id ASC'} accepts_nested_attributes_for :icons, :reject_if => lambda { |a| a[:icon].blank? }, :allow_destroy => true end 代替。