PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell: Mit Date die Daten der letzten Woche bestimmen



cyandy
18.05.15, 09:02
Hallo Community,

Ich möchte ein Shellscript schreiben das mir die Daten, mithilfe von date, der letzten Woche ausgibt.

In etwa so:

11.05.2015
12.05.2015
.
.
.
17.05.2015

Jeweils vom letzten Montag zum letzten Sonntag. Ich habe bis jetzt ein Script das die Daten der letzten Woche ausgibt. Alles gut und schön. Das Problem ist nur, wenn ich das Script Montag ausführe, springt er einen Montag zu weit zurück.

Heute (18.05.2015) würde er auf den 04.05.2015 statt dem 11.05.2015 springen :(

Hier ist mein "Script"


#!/bin/bash

for w in 7 6 5 4 3 2 1; do
date -d "last monday -$w days" +%Y%m%d ;
done


Kann mir da jemand helfen?
Ich möchte gerne weiter mit date arbeiten.

Liebe Grüße
Cyandy :o

muell200
18.05.15, 10:01
Ich möchte ein Shellscript schreiben das mir die Daten, mithilfe von date, der letzten Woche ausgibt.


suchst du sowas:


for w in 7 6 5 4 3 2 1; do date -d "-$w days" +%Y%m%d; done

cyandy
18.05.15, 14:08
Nein...Wenn ich das Script morgen ausführen würde, würde es mir das datum vom letzten Dienstag an angeben.
Es soll aber fest immer der letzte Montag sein.

BetterWorld
18.05.15, 14:26
probier sowas wie
date -d "last Monday"
date -d "last Monday next day"

Also irgendwas wie
LANG=C actueller_tag=$( date -d "last Monday")
LANG=C date -d "$actueller_tag next day"
Das LANG=C stellt sicher, dass die Datumsangabe in ASCII erfolgt, womit date dann prima umgehen kann.

oder sowas
LANG=C date -d "last Monday $day_count days"Eine positive $day gilt als plus. Negativ geht in die Vergangenheit.

Für dich also sowas.

for d in {1..6}; do
date -d "last Monday $d day"
doneDas geht auch ohne LANG=C, da hier das Date nicht geparst wird.

Und natürlich geht auch ne Null:

for d in {0..7}; do
date -d "last Monday $d day"
done