bash - 在 MAC OSX 中比较 Bash 中的两个日期

标签 bash macos date

我是 Bash 的新手,请提前致歉。


设置

我有一个特定的结束日期 end这取决于特定的开始日期 s和周期长度 p这样,end=s+p .


问题

当且仅当今天的日期早于或等于结束日期时,我想执行命令。

即:执行命令iff date ≤ end .


代码

s='20/09/2017'
p='1'
end=$( date -j -v +"$p"d -f "%d/%m/%Y" "$s")

if [[ date < “$end” ]];
then
   echo 'ok'
fi

有两件事不应该是这样,

  1. p=1暗示 end = '21/09/2017' < date = '26/09/2017' , 但我仍然得到 ok .
  2. 我使用 date < “$end”但我想要date ≤ “$end”

如何修正1和2?

最佳答案

当您将日期格式化为 YYYYMMDD 时,您可以简单地使用字母数字比较:

start=$(date +'%Y%m%d')
end=$(date +'%Y%m%d')

# -gt means greater than - for example.
# check `help test` to get all available operators
if [ $start -gt $end ] ; then ...

关于bash - 在 MAC OSX 中比较 Bash 中的两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46426691/

相关文章:

ruby - Ubuntu 在启动时启动 Rails

python-3.x - PyInstaller 可执行文件不显示 GUI

c++ - Ifstream 在 OSX 上看不到新内容

macos - 如何在 NSPersistentDocument 中预加载 Core Data 中的数据?

excel - 如果日期在今天之前且相邻单元格为空,则条件格式

Java将从数据库返回的日期值拆分为单独的日期和时间字符串

python - 如何在 python 中解析多个(未知)日期格式?

c - 将正在运行的程序的输出通过管道传输到 xargs

linux - 使用 bash 脚本刷新浏览器

linux - bash 中的参数