如何在Linux中设置变量为当前日期和前一天的日期?

70

我想将变量date-today设置为当前日期,并将date_dir设置为昨天的日期,均使用yyyy-mm-dd格式。

我正在进行如下操作:

#!/bin/bash
d=`date +%y%m%d%H%M%S`
echo $d

3
我很困惑你是如何在特定的节点上被卡住的。你成功使用了指定格式检索了日期,但不是你想要的格式。你成功将输出保存到变量中,但不是你想要的变量。你是如何编写出"I am doing this"下面的代码的?为什么你不能再做一点额外的努力来调整它以符合你的需求呢? - ruakh
1
@ruakh:实际上它没有显示$d变量,这就是为什么我对这个Bash脚本非常陌生。 - cloudbud
1
你发布的脚本确实打印了$d。是什么让你觉得它没有打印出来? - ruakh
1
@ruakh:我已经完成了。谢谢!!!我漏掉了“$d”。 - cloudbud
4个回答

120

您可以尝试:

#!/bin/bash
d=$(date +%Y-%m-%d)
echo "$d"

编辑:根据QuantumFool的评论,将4位数日期的y更改为Y。


2
实际上,如果年份应该显示为四个字符长(即2016),则应该使用%Y代替%y(它将返回20切掉的16)。 - QuantumFool

18

您还可以使用更短的格式

从手册页面中:

%F     full date; same as %Y-%m-%d

示例:

#!/bin/bash
date_today=$(date +%F)
date_dir=$(date +%F -d yesterday)

12

简单:

today="$(date '+%Y-%m-%d')"
yesterday="$(date -d yesterday '+%Y-%m-%d')"

2
你应该先执行man date
date +%Y-%m-%d
date +%Y-%m-%d -d yesterday

我想把它设置成一个变量,怎么做。我正在创建一个Bash脚本。 - cloudbud
我也想告诉你,它正在选择日期 +%Y-%m-%d 2013-12-09,日期 +%Y-%m-%d -d 昨天正在选择2013-12-09 - cloudbud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接