我得到了一个实际时间的变量。
time=$(date +"%H:%M")
现在我想检查(带有案例陈述)它属于哪一天。
范围为06:00 to 12:00
,13:00 to 18:00
,19:00 to 22:00
和23:00 to 05:00
。
我如何知道这些范围中的哪一个是我的实际时间?
答案 0 :(得分:0)
在这个精彩的Stéphane Chazelas's answer上工作,用于对case-construct进行算术运算以及我自己使用GNU date
处理日期值的逻辑,下面这样的脚本可以解决你的问题。
#!/bin/bash
read -p "Date in (HH:MM) format: " inputdate
numDate=$(date -d"$inputdate" +"%H%M")
case $((
(numDate >= 0600 && numDate <= 1200) * 1 +
(numDate >= 1300 && numDate <= 1800) * 2 +
(numDate >= 1900 && numDate <= 2200) * 3 +
(numDate >= 2300 && numDate <= 0500) * 4)) in
(1) echo "In time range between 06:00 to 12:00";;
(2) echo "In time range between 13:00 to 18:00";;
(3) echo "In time range between 19:00 to 22:00";;
(4) echo "In time range between 23:00 to 05:00";;
(0) echo "None of the above";;
esac
逻辑是使用GNU date's
选项+"%H%M"
将输入日期解析为实际数字并处理评估的返回值。