我有一个主脚本,每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
Run Code Online (Sandbox Code Playgroud)
更新:现在我通过检查生产时间而不是夜间模式时间来查找代码(请参阅编辑历史记录).但看起来我的脚本正在考虑评价中"twalberg"所建议的八进制值.有人可以帮助我如何照顾这些价值观吗?
我只需要一种方法来确保我的脚本在指定的时间跨度之间运行.
不要用数字比较它们(-ge
,-le
); 只是将它们比作字符串.既然ksh
没有>=
和<=
,你可以使用等价物! <
而! >
不是.
if [[ ! "$currentTime" < "$prodStartTime" && ! "$currentTime" > "$prodEndTime" ]]; then
./doSomeWork.sh
fi
Run Code Online (Sandbox Code Playgroud)
但既然我们否定了,那么如果我们应用德莫根定律并且只有否定一次就更清楚了:
if [[ ! ( "$currentTime" < "$prodStartTime" || "$currentTime" > "$prodEndTime" ) ]]; then
./doSomeWork.sh
fi
Run Code Online (Sandbox Code Playgroud)
在任何情况下,当使用<
和时>
,不需要担心字符串作为数字(八进制或其他)的解释.只要所有时间都具有相同的位数,字符串比较就会产生正确的答案.
归档时间: |
|
查看次数: |
19402 次 |
最近记录: |