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 messageReceived on Wed 24 Aug 2016 - 16:32:57 CEST