bash - Bash比较两个日期
问题描述
试图弄清楚如何比较两个日期以确定哪个是主要的,格式是星期几、小时、分钟,分为 3 个变量。
输入具有最大值的示例文本文件
7
23
59
重击
#!/bin/bash
#CHECKTIME
{
IFS= read -r d
IFS= read -r h
IFS= read -r m
} < myFile.txt
echo schedule time:
echo $d
echo $h
echo $m
#GET TIME
IFS=- read -r DAY HOUR MINUTE < <(date +%u-%H-%M)
echo current time:
echo $DAY
echo $HOUR
echo $MINUTE
if [ "$DAY" >= "$d" ] && [ "$HOUR" >= "$h" ]
#if (("$DAY" = "$d"))
then
echo "do event"
else
echo "don't do event"
fi
解决方案
将输入文件更改为在数字之间不包含换行符:
$ cat myfile.txt
72359
然后这样做:
$ IFS= read -r foo < myfile.txt
$ bar=$(date '+%u%H%M')
$ if (( foo > bar )); then echo "go foo!"; else echo "go bar!"; fi
go foo!
上面 foo 和 bar 的值(为自己选择更好的名称)是:
$ echo "$foo"
72359
$ echo "$bar"
71918
如果您必须使用换行符将 myfile.txt 保持为当前格式:
$ cat myfile.txt
7
23
59
然后只需将read
上面的行更改为:
$ foo=$(tr -d $'\n' < myfile.txt)
并按照我展示的方式保留脚本的其余部分。
推荐阅读
- python - Python如何拥有一个我可以执行和导入的模块
- django - Django:尝试使用自引用默认值进行用户迁移
- html - :checked 当复选框输入不在需要设置样式的项目旁边时不起作用
- algorithm - 生成和解决一个没有边界的迷宫?
- html - 如何使用 HTML IFRAME 元素嵌入内容?
- powershell - 在同一命令中搜索隐藏和可见目录
- c# - 'Microsoft.AspNetCore.Identity.UserManager' 类型没有服务:尝试扩展 IdentityUser?
- android - 使用 firebase 实现异构 RecyclerView
- haskell - 将持久化 SqlPersistT 与 Servants 处理程序结合使用
- java - Spring SchedulingConfigurer 动态延迟