如何显示存储在变量中的日期前后的一天?

How to display a day before and after a date stored in a variable?

我正在尝试显示存储在变量中的给定日期之前和之后的日期。 我可以在没有像这样的变量的情况下做到这一点

thetgerwie:~ $ date -d '2019-09-09 1 day ago' +'%F' result: 2019-09-08 it works fine

但是如果我使用变量 dte="2019-09-09"

thetgerwie:~ $ date -d '(echo "$dte") day ago' +'%F' result: 2019-03-04 I get the current date

知道如何解决这个问题吗?

谢谢

date命令支持算术运算
示例:

➜  ~  date -d '2019-09-09 + 1 day' +'%F'    
2019-09-10
➜  ~  date -d '2019-09-09 - 1 day' +'%F'
2019-09-08

更新
请使用双引号

➜  ~  dte="2019-09-09"             
➜  ~  echo $dte
2019-09-09
➜  ~  date -d "$dte day ago" +'%F'
2019-09-08

这是一个很好的资源:
https://linuxcommando.blogspot.com/2009/11/fun-with-date-arithmetic.html

希望这就是您要找的

干杯!

您不需要使用 echo 连接 $dte 变量。

在这种情况下使用双引号就足够了:

dte='2019-09-09'
date -d "$dte 1 day ago" +'%F'