我有这个命令 date -d "-0 month -$(($(date +%d)-1)) days"+%Y%m%d
,我喜欢知道 2014-Sep-1 和 2014-Sep-30 之间的所有日子,返回的结果是什么。
如何在不改变我的系统时钟的情况下模拟这个?
最佳答案
您可以再次为date
使用-d
选项。
$ date -d "2014-09-01"
Mon Sep 1 00:00:00 CEST 2014
$ date -d "2014-09-01 + 1 day"
Tue Sep 2 00:00:00 CEST 2014
有点像
for i in `seq 0 29`
do
today=$(date -d "2014-09-01 + $i days" '+%F')
day=$(date -d "2014-09-01 + $i days" '+%-d')
date -d "$today -0 month -$(($day - 1)) days" '+%Y%m%d'
done
应该可以解决问题。请注意,我已将格式说明符更改为 %-d
。否则,shell 会将前九个值解释为八进制,这对于 08 和 09 将失败。
但是,我不太确定您最终想要实现的目标。如果只想打印该月的第一天,
$ date '+%Y%m01'
看起来很多更简单。
关于linux - 如何在linux命令中检查指定范围内每一天的日期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170558/