Re: Re: Cron jeden ersten Mittwoch im Monat ausführen

From: Oliver Fromme <oliver(at)fromme.com>
Date: Wed, 24 Aug 2016 16:32:52 +0200 (CEST)

Matthias Fechner wrote:
> Am 24.08.2016 um 13:00 schrieb Lars Engels:
> > Du musst vor / nach den eckigen Klammern [] jeweils ein Leerzeichen
> > setzen:
> >
> > [ `date +\%d` -le 07 ]
>
> ich habe das jetzt mal geändert, warten wir mal bis nächste Woche was
> Cron dann sagt ;)

Kleiner Tip: Allgemein sollte man führende Nullen vermeiden,
da manche Kommandos das oktal interpretieren. In diesem
speziellen Fall ist es egal, weil 7 dezimal und oktal das
gleiche ist, aber man beachte z.B. mal folgendes (getestet
mit der /bin/sh von FreeBSD 10.3):

$ echo $(( 010 + 020 ))
24

Erklärung: Oktal 010 is dezimal 8, und oktal 020 ist 16.
Die bash verhält sich genau so. Die zsh interpretiert
dagegen per Default alles dezimal (ist aber einstellbar:
"setopt octalzeroes") und gibt bei obigem Beispiel 30 aus.
Die Manpage begründet das nachvollziehbar: "[...] it causes
problems with parsing of, for example, date and time strings
with leading zeroes."

Aus dem gleichen Grund empfehle ich beim date-Kommando %e
anstelle von %d, wenn man vorhat, mit dem Resultat zu
rechnen oder numerische Vergleiche zu machen, denn %e gibt
bei einstelligen Tagen keine führende Null aus. Beispiel:
Das folgende Kommando (unter /bin/sh) führt am 8. und 9.
eines Monats zu einer Fehlermeldung:

$ echo $(( `date +%d` + 1 ))
arithmetic expression: expecting EOF: " 08 + 1 "

Mit %e dagegen klappt es an jedem Tag. Alternativ kann
man auch %-d verwenden. Das funktioniert auch mit den
anderen Ersetzungen, z.B. %-m für Monate, %-H für Stunden
und so weiter.

Gruß
   Olli

-- 
Oliver Fromme, München   --   FreeBSD + DragonFly BSD
``We are all but compressed light'' - Albert Einstein
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 24 Aug 2016 - 16:32:57 CEST

search this site