Как получить дату последнего воскресенья от сегодняшней даты, используя скрипт оболочки? - PullRequest
0 голосов
/ 31 мая 2019

Я хочу напечатать дату последнего воскресенья, взяв сегодняшнюю дату в качестве входных данных для всех дней недели, кроме воскресенья, но если это воскресенье, то оно должно напечатать сегодняшнюю дату. Я попробовал это,

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

но это дает дату воскресенья до последнего.

Ответы [ 4 ]

4 голосов
/ 31 мая 2019

Вместо того, чтобы спрашивать о прошлом воскресенье, спросите за одну неделю до следующего воскресенья.

$ date +%Y%m%d
20190531
$ date -d'next sunday - 1 week' +%Y%m%d
20190526

Так же, как «последнее воскресенье» всегда предшествует текущему дню, так и «следующее воскресенье» всегда после текущего дня.

Поскольку я пишу этот ответ в пятницу, давайте спросим последнюю пятницу, используя эту технику:

$ date +"%A %F"
Friday 2019-05-31
$ date -d 'next Friday - 1 week' +"%A %F"
Friday 2019-05-31
1 голос
/ 31 мая 2019

Это можно сделать просто с помощью самой команды date, используя параметр date -d, где:

date -d "today - $(date -d today +"%u") days"

Где вы должны указать любую дату, какую захотите, например today (которая используется в качестве примера), и она даст дату предыдущего воскресенья. Это делается путем вычитания текущего дня недели (date -d today +"%u") из числа дней с данной даты (today в примере). Вы можете использовать if перед проверкой if [ "$(date -d today +"%u")" -eq '7' ]; then date; else ... fi, чтобы просто вывести текущую дату, если сегодня воскресенье.

Пример

$ date -d "today - $(date -d today +"%u") days"
Sun May 26 23:04:44 CDT 2019
1 голос
/ 31 мая 2019

Не могли бы вы попробовать следующее.

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."
      }
    }
  }
}'
0 голосов
/ 31 мая 2019

Команда для печати даты последнего воскресенья, взяв сегодняшнюю дату:

a=$(date -d 'last Sunday ' +"%A %F")
echo $a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...