我是 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
有两件事不应该是这样,
-
p=1
暗示end = '21/09/2017'
<date = '26/09/2017'
, 但我仍然得到ok
. - 我使用
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/