Bash 脚本中的时隙定义

Bash 脚本中的时隙定义

我需要在午夜定义一个时间段。当脚本被触发时,它应该测试时间是否在下午 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

相关内容