Inclusive nächster Tag ist eingebaut, nur -d"Thursday"
verwenden, (kein Präfix) und date
wird today
zurück, wenn heute Donnerstag oder am nächsten Donnerstag, wenn nicht.
Aber date
hat keine inklusive letzte, so ist hier ein inklusive letzten Wochentag kludge Funktion:
ilast() { a=$(date -d'today' "+%A") ; b=$(date -d"$1" "+%A") ; \
[ $a != $b ] && echo -n "last " ; echo $b ; }
Test (die auch ilast
‚s Nutzung zeigt):
for d in Sun. Mon. Tue. Wed. Thu. Fri. Sat. ; do \
echo -n $(ilast $d)" " ; \
date -d"$(ilast $d)" "+%Y%m%d" ; \
done | column -t
Ausgabe:
last Sunday 20160626
last Monday 20160627
last Tuesday 20160628
last Wednesday 20160629
Thursday 20160630
last Friday 20160624
last Saturday 20160625
Die Funktion setzt $ ein zu today
's Wochentag und $ b zu 1 $' s Wochentag, die eine andere Wochentag wäre, es sei denn,$ 1 ist heutigen Wochentag. Wenn also die Wochentage $ und $ b nicht gleich sind, (sechs von sieben Tagen würden sie unterschiedlich sein), werden wir "last" dem langen Namen des Wochentages voranstellen. Wenn die Wochentage ein $ und $ bsind gleich, nicht gedruckt „letzte“, da (ein Tag von sieben), die Standard-inklusive nächsten bereits tut das gewünschte Sache.
Ich bin nicht bewusst, alternative Formen von '{next | last} - * Tag ', die heute umfasst. Es würde semantisch (sprachlich) keinen Sinn machen. "Nächste" und "letzte" würden in diesem Zusammenhang heute nicht in normalen Sprachbegriffen bedeuten. Warum wird es benötigt? Vielleicht ein Kontext ... Sie könnten immer ein einfaches benutzerdefiniertes Skript erstellen, um dieses Ergebnis zu erhalten. – lurker
Wie sieht es mit dem heutigen Wochentag aus ('date +% w')? Wenn es zum Beispiel Donnerstag ist und du nach dem letzten Donnerstag suchst, dann bist du fertig. –