Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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 如何使用shell脚本从今天的日期获取上周日的日期?_Bash_Shell - Fatal编程技术网

Bash 如何使用shell脚本从今天的日期获取上周日的日期?

Bash 如何使用shell脚本从今天的日期获取上周日的日期?,bash,shell,Bash,Shell,我想通过将今天的日期作为一周中除星期日以外所有天的输入来打印上星期日的日期,但如果是星期日,则应打印今天的日期。我试过这个 a=`date -dlast-sunday +%Y%m%d` 但这给出了最后一个星期日之前的一个日期 你能试试下面的吗 cal | awk -v dat=$(date +%d) ' { for(i=1;i<=NF;i++){ if($i==dat){ if(i!=1){ print "Last Sunday is: "$1

我想通过将今天的日期作为一周中除星期日以外所有天的输入来打印上星期日的日期,但如果是星期日,则应打印今天的日期。我试过这个

a=`date -dlast-sunday +%Y%m%d`

但这给出了最后一个星期日之前的一个日期

你能试试下面的吗

cal |
awk -v dat=$(date +%d) '
{
  for(i=1;i<=NF;i++){
    if($i==dat){
      if(i!=1){
         print "Last Sunday is: "$1
      }
      else{
         print "This day itself is Sunday."
      }
    }
  }
}'

只需使用date命令本身,使用date-d选项即可完成此操作,其中:

date -d "today - $(date -d today +"%u") days"
在这里,你可以通过任何你喜欢的日期,比如今天,它会给出上一个星期天的日期。它是通过从示例中的给定日期减去一周中的当前日期-d day+%u天数来实现的。在检查if[$date-d today+%u-eq'7']之前,可以使用if;然后是日期;其他的如果今天是星期天,fi只需输出当前日期

范例


与其要求上周日,不如要求在下周日前一周

正如上周日总是比当天早一样,下周日也总是在当天之后

今天是星期五,我在写这个答案的时候,让我们用这个技巧问一下上周五:

$ date +"%A %F"
Friday 2019-05-31
$ date -d 'next Friday - 1 week' +"%A %F"
Friday 2019-05-31

以今天的日期打印上周日的日期的命令是:

a=$(date -d 'last Sunday ' +"%A %F")
echo $a

给我26号的日期,这是最后一个星期天。所以请注意,使用$。。。用于命令替换,而不是过时的背景标记。它使你的脚本更具可读性。对于Kubuntu,我必须添加-h以关闭cal的今日突出显示。@Cyrus,当然感谢先生的分享;请随意用你的发现编辑我的帖子,干杯。
$ date +"%A %F"
Friday 2019-05-31
$ date -d 'next Friday - 1 week' +"%A %F"
Friday 2019-05-31
a=$(date -d 'last Sunday ' +"%A %F")
echo $a