Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash脚本获取给定输入日期的星期六日期_Bash_Shell - Fatal编程技术网

使用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月份给您所有的星期六,对吗?不。。它应该只返回输入日期的最后一个星期六日期。