Ich suche nach direkten Unix-Befehlen, um den ersten Sonntag des nächsten Monats, den ersten Montag des nächsten Monats, den ersten Dienstag des nächsten Monats, den ersten Mittwoch des nächsten Monats usw. zu erhalten.
Ich werde sie im vollständigen Datumsformat benötigen (Zeit ist nicht obligatorisch)
Ich kann Zahlen wie 2, 3, 4 usw. erhalten. Da ich nicht nur Zahlen möchte, benötige ich sie im Datumsformat (einschließlich Tag, Monat, Jahr).
$ NEXT_MONTH=`date +'%m %Y' -d 'next month'` $ echo $NEXT_MONTH 04 2017 $ NEXT_SUNDAY=`cal $NEXT_MONTH | awk 'NF==7 && !/^Su/{print $1;exit}'` $ echo $NEXT_SUNDAY 2
Ich benötige diese Daten, um Benachrichtigungen für die E-Mail-Gruppe zu senden.
Beispiel: Ich könnte den ersten Samstag im nächsten Monat wie folgt bekommen.
$ firstofmonth=$(date -d '+1 months' '+%Y%m01')
20170401
$ firstsaturday=$(date -d "$firstofmonth" '+%Y-%m')-$((7 - \
$(date -d "$firstofmonth" '+%u') ))
2017-04-1
bash
ist ein unvollendeter Klon von ksh (mit einigen Merkmalen von (t) csh und zsh und sogar einigen eigenen). Neuere Versionen vonbash
haben Unterstützung fürprintf '%(format)T'
von hinzugefügtksh93
, aber nicht die Möglichkeit, diese Art von Datumsspezifikationen zu analysieren. Ersetzen Sie Ihre Knall durch#! /path/to/ksh93 -
.bash
ist ein unvollendeter Klon von ksh" - ich habe mich immer so gefühlt.Angenommen, GNU
date
(dafür verwenden-d
Sie sich selbst) und einezsh
ähnliche Shell für{1..7}
:Ersetzen Sie das
awk
Mondurch einen beliebigen Wochentag (verwenden SieLC_ALL=C
diese Option, um englische Monatsnamen unabhängig vom Gebietsschema des Benutzers abzurufen). Es ist möglicherweise auch besser, dies in einer Variablen zu speichern, wenn Sie für jeden Wochentag eine neue Abfrage durchführen:quelle
PHP macht es eigentlich ziemlich einfach, Daten mit Texteingabe zu analysieren, wenn es auf Ihrem System verfügbar ist.
Beispiel:
Ich habe diese Funktion in meiner .bashrc:
Was ich verwenden kann als:
Bearbeiten Hinzufügen der zu verwendenden Option
cal
Fast jedes System, das hat,
bash
wird habencal
. Das Kalenderprogramm. Sie können eine Liste des Termins für die ersten jede Woche Tages erhalten , indem eine Kombination aus Laufencal
,date
undawk
, wie folgt:Welches gibt Ihnen die folgende Ausgabe:
Ändern
$2
zu$NF
in der awk - Anweisung den Zeitpunkt des letzten Auftretens eines jeden Tages in einem Monat zu bekommen.quelle
php
installiert. Ich habe mit einem Beispiel aktualisiert, die verwendetcal
,date
undawk
Befehle.