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

Luc*_*pan 2 macos bash 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
Run Code Online (Sandbox Code Playgroud)

有两件事不应该是这样,

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

如何纠正1和2?

hek*_*mgl 5

当您格式化日期时,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 ...
Run Code Online (Sandbox Code Playgroud)