在bash中生成特定日期

在bash中生成特定日期,bash,shell,date,random,Bash,Shell,Date,Random,嗨,我写了一些bash来生成YYYYDDMM格式的日期 我知道这并不完美,但最终的结果是: 生成两个日期范围,每个日期间隔31天,从今天+一天开始,较早的日期在今年年底结束。格式为YYYYMMDD month=“$(awk-vmin=1-vmax=12'开始{srand();打印int(min+rand()*(max-min+1)))” day=“$(awk-vmin=1-vmax=31'开始{srand();打印int(min+rand()*(max-min+1)))” 年份=“$(日期+%Y

嗨,我写了一些bash来生成YYYYDDMM格式的日期

我知道这并不完美,但最终的结果是:

生成两个日期范围,每个日期间隔31天,从今天+一天开始,较早的日期在今年年底结束。格式为YYYYMMDD

month=“$(awk-vmin=1-vmax=12'开始{srand();打印int(min+rand()*(max-min+1)))”
day=“$(awk-vmin=1-vmax=31'开始{srand();打印int(min+rand()*(max-min+1)))”
年份=“$(日期+%Y)”
如果(“${month}”<10));然后
month_proper=“$(echo 0”${month}”)
其他的
month_proper=“$(echo“${month}”)”
fi
如果(“${day}”<10));然后
day_proper=“$(echo 0”${day}”)
其他的
day_proper=“$(echo“${day}”)”
fi
回送月份“${month}”
如果小于10,则用0回显月份:“${month_property}”
回音日“${day}”
0小于10的回显日:“${day_property}”
ok=“$(日期-d”“$year”“${month\u property}”“${day\u property}”“+%Y%m%d”)”
使用正确格式“${ok}”回显日期
日期-d“$year”“${month\u property}”“${day\u property}”

我必须向哪个方向展开此脚本才能获得最终结果?我已经有了日期生成,但是没有检查是否比今天提前一天。

需求几乎准确地指定了范围(从12月31日到明年1月31日),因此您可以编写

a_fmt=`date -d "tomorrow" +%Y1231`
a_num=`date -d "$a_fmt" +%s`

b_num=$(( a_num + 31 * 24 * 3600 ))
b_fmt=`date -d @$b_num +%Y%m%d`

echo "Range is '$a_fmt'..'$b_fmt'"

我不明白你的要求。你想要每一对,一对随机的,还是什么?脚本的期望输出到底是什么?
month=$($RANDOM%12+1))
(类似于
day
)可能足够随机,无需使用
awk
。请求的范围始终是
YYYY1231
yyyyy0131
,不是吗?您只需处理“今天”是12月31日的情况。不要生成月份和天数,只需找到12月1日之前的天数,在1和该天数之间选择一个随机数,然后使用GNU的
日期-d“今天+42天”
将其格式化为日期。自动处理闰年和一切。是的,我需要以上要求的随机日期