【发布时间】:2017-03-13 13:14:33
【问题描述】:
我有一个主脚本,每 10 分钟调用一次 doSomeWork.sh。
但条件是 doSomeWork.sh 不应该在 23:30:00 到 03:00:00 之间运行。
我的脚本如下所示。
#!/bin/ksh
prodStartTime="030000"
prodEndTime="233000"
currentTime=`date +"%H%M%S"`
echo $prodStartTime
echo $prodEndTime
echo $currentTime
while true
do
if [[ $currentTime -ge $prodStartTime && $currentTime -le $prodEndTime ]];
then
./doSomeWork.sh
else
echo Do Nothing
fi
sleep 600
done
更新:现在我通过检查生产时间而不是夜间模式时间来使代码工作(请参阅编辑历史记录)。但看起来我的脚本正在考虑 cmets 中“twalberg”所建议的八进制值。有人可以帮助我如何处理这些价值观吗?
我只需要一种方法来确保我的脚本在指定的时间范围内运行。
【问题讨论】:
-
没有理由为这些分配使用 echo,只需分配它们。
nightModeStartTime=230000; nightModeEndTime=033000 -
这不起作用怎么办?此外(当您按下遮光窗口时)睡更长的时间(甚至可能一次几乎是整个窗口的长度)以避免在窗口期间如此频繁地循环可能是有意义的。
-
您是否考虑过您的
033000(以及来自date的任何带有前导零的结果)可能被解释为八进制数?你并没有真正解释它是如何不工作的,所以这只是一个猜测......@ 987654325@ 就是这种情况,但我不知道你正在使用的ksh版本是否会做或不做。 -
脚本,如图所示,不会在 23:00:00 和 03:30:00 之间运行
./doSomeWork.sh(不是你写的 23:30:00 和 03:00:00),如果这是一个问题。