na és a date-val? (awk-val mi történt?)

#!/bin/bash

today_dow=$(date +%w)
days=(Sunday Monday Tuesday Wednesday Thursday Friday Saturday)
for (( dow=0; dow<7; dow++ )); do 
    if (( dow < today_dow )); then 
        date -d "last ${days[dow]}"
    else 
        date -d "${days[dow]}"
    fi
done

echo "***********"

today_dow=$(date +%u)
days=(Monday Tuesday Wednesday Thursday Friday Saturday Sunday)
for (( dow=0; dow<7; dow++ )); do 
    if (( dow < today_dow )); then 
        date -d "last ${days[dow]}"
    else 
        date -d "${days[dow]}"
    fi
done

2020. máj. 31., vasárnap, 00:00:00 CEST
2020. jún. 1., hétfő, 00:00:00 CEST
2020. jún. 2., kedd, 00:00:00 CEST
2020. jún. 3., szerda, 00:00:00 CEST
2020. jún. 4., csütörtök, 00:00:00 CEST
2020. jún. 5., péntek, 00:00:00 CEST
2020. jún. 6., szombat, 00:00:00 CEST
***********
2020. jún. 1., hétfő, 00:00:00 CEST
2020. jún. 2., kedd, 00:00:00 CEST
2020. jún. 3., szerda, 00:00:00 CEST
2020. jún. 4., csütörtök, 00:00:00 CEST
2020. jún. 5., péntek, 00:00:00 CEST
2020. máj. 30., szombat, 00:00:00 CEST
2020. jún. 7., vasárnap, 00:00:00 CEST

Mit keres itt a május 30? Vagy mi a nem jó?
Elvileg az aktuális hetet kellene kilistáznia. 

Hozzászólások

Szerkesztve: 2020. 06. 06., szo - 20:21

Nálam is május 30:


$ date -d 'last Saturday'
Sat May 30 00:00:00 CEST 2020

Egyszer tákoltam egy perl scriptet, amivel ilyesmit lehet:


Range=$(pldate today downto-dow 1 printf "%Y%m%d " upto-dow 7 printf "%Y%m%d")
for i in $(seq $Range);
do
  date -d$i
done

vagy pl az előző hónap:


Range=$(pldate today sub-month 1 set-mday 1 printf "%Y%m%d " set-mday -1 printf "%Y%m%d")
for i in $(seq $Range);
do
  date -d$i
done

Nem teljesen ertem a problemat. Ma junius 6, szombat van. Az elozo szombati nap majus 30 volt, ezt iratod ki a date-tel.

When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Az a baj, hogy nem követi végig és nem látja így a különbséget.

az elsőben 6-ra végződik a sorozat ezért nincs múltheti.

a days array-okat is hozzá kell igazitani és a for kezdő végző értékeket is a date vissza adott értékeihez.

egyiknél 0-6 másiknél 1-7.

A last megvégezte a dolgát.