使用bash脚本获取给定输入日期的星期六日期
通过使用下面的命令,它将返回上周六的日期使用bash脚本获取给定输入日期的星期六日期,bash,shell,Bash,Shell,通过使用下面的命令,它将返回上周六的日期 date +"%b-%d-%Y" -d "last saturday" Sep-01-2018 我想将输入日期作为参数传递,它应该返回bash脚本中最后一个星期六的日期 Aug-08-2018 -----> Aug-04-2018 Jun-04-2018 -----> Jun-02-2018 得到一个负数,它将是要减去的天数。我们使用13,因为星期六是6,并且6+7=13。这将使我们提前一两周到达星期六。然后我们取模7,确保它是下周六
date +"%b-%d-%Y" -d "last saturday"
Sep-01-2018
我想将输入日期作为参数传递,它应该返回bash脚本中最后一个星期六的日期
Aug-08-2018 -----> Aug-04-2018
Jun-04-2018 -----> Jun-02-2018
得到一个负数,它将是要减去的天数。我们使用13,因为星期六是6,并且
6+7=13
。这将使我们提前一两周到达星期六。然后我们取模7,确保它是下周六,然后减去7,使它成为上周六。然后我们将该差异放入日期字符串中:
$ date_str="Aug-08-2018"
$ diff=$(( (13 - $(date +"%u" -d ${date_str})) % 7 - 7))
$ date -d "${date_str} ${diff} days"
Sat Aug 4 00:00:00 EDT 2018
得到一个负数,它将是要减去的天数。我们使用13,因为星期六是6,并且
6+7=13
。这将使我们提前一两周到达星期六。然后我们取模7,确保它是下周六,然后减去7,使它成为上周六。然后我们将该差异放入日期字符串中:
$ date_str="Aug-08-2018"
$ diff=$(( (13 - $(date +"%u" -d ${date_str})) % 7 - 7))
$ date -d "${date_str} ${diff} days"
Sat Aug 4 00:00:00 EDT 2018
你使用的是什么
日期实施?上周六的你的意思是如果你通过2018-08-31,给你8月的所有周六,对吗?不。。它应该只返回输入日期的最后一个星期六日期。您使用的是什么date
implementation?上星期六的u是指如果您通过2018-08-31,请在8月份给您所有的星期六,对吗?不。。它应该只返回输入日期的最后一个星期六日期。