我需要在午夜定义一个时间段。当脚本被触发时,它应该测试时间是否在下午 5 点到上午 8 点之间。仅当它为 true 时,才应运行命令。我尝试了以下方法,它有效,但没有超过午夜。知道如何实现它吗?
#!bin/bash
hr=`date +%H%M`
if test $hr -ge 1700 -a $hr -lt 0800
then
echo "success"
fi
答案1
下午 5 点至上午 7:59 之间运行(上午 8 点除外):
case $(date +%H) in
(17|18|19|20|21|22|23|00|01|02|03|04|05|06|07) echo run;;
(*) echo do not run;;
esac
...要包含所有上午 8 点的时间范围,请在第一个列表中包含 8 个。无需在date
命令中包含分钟。
答案2
我不完全确定你想要做什么,但我看到的一个问题是数字不能既大于 1700 又小于 0800,因此你的 if 语句将始终返回 false。您需要使用or
运算符而不是and
.
这是我想出的似乎有效的方法:
#!/bin/bash
hr=$(date +%H%M)
if [[ $hr -ge "1700" || $hr -lt "0800" ]]; then
echo "success"
fi