Wie lautet die Syntax, um den aktuellen Monatsnamen (z. B. Jan oder Februar) in einem bashSkript abzurufen ?
Wie lautet die Syntax, um den aktuellen Monatsnamen (z. B. Jan oder Februar) in einem bashSkript abzurufen ?
Antworten:
Sie können den date(1)Befehl verwenden.
Zum Beispiel:
date +%b
currentmonthname=$(LANG=en_us_88591; date "+%B");, um den englischen Monatsnamen abzurufen
currentmonthname=$(LC_ALL=C date +%B). Ihr Ansatz würde nur funktionieren, wenn er $LANGsich bereits in der Umgebung befindet und LC_ALLnicht festgelegt wurde und entweder en_us_88591ein auf Ihrem System vorhandenes Gebietsschema mit US-englischen Monatsnamen ist oder (wahrscheinlicher) nicht vorhanden ist. In diesem Fall wird standardmäßig C / POSIX verwendet Gebietsschema, in dem die Monatsnamen auf Englisch sind.
Das strftime(3)Handbuch ( man 3 strftime) listet, falls auf Ihrem System installiert, alle Formatierungszeichenfolgen auf, die mit dem dateDienstprogramm verwendet werden können, oder die %(...)TFormatierungszeichenfolgen mit printf. Das Handbuch des dateBefehls kann auch die unterstützten Formatierungszeichenfolgen enthalten.
Um einen von ihnen zu verwenden, z. B. %b("der abgekürzte Monatsname des Gebietsschemas") oder %B("den vollständigen Monatsnamen des Gebietsschemas"), verwenden Sie die +Option für date:
$ date +%B
December
$ date +%b
Dec
$ date +'%B is abbreviated as "%b"'
December is abbreviated as "Dec"
Oder mit printf(in ksh93oder bash4.3+):
$ printf '%(%B)T\n'
December
$ printf '%(%b)T\n'
Dec
$ printf '%(%B is abbreviated as "%b")T\n'
December is abbreviated as "Dec"
So erhalten Sie einen abgekürzten Monat in Kleinbuchstaben bash(wenn Ihr Gebietsschema nicht immer Kleinbuchstaben für Monate enthält):
$ month=$( date +%b )
$ printf 'It is %s\n' "${month,,}"
It is dec
Die Parametererweiterung ${parameter,,pattern}ändert den Fall, $parameterwo immer patternÜbereinstimmungen auftreten. In ${m,,}stimmt das Muster überall überein, sodass die gesamte Zeichenfolge in $mKleinbuchstaben geschrieben ist.
Oder kshdeklarieren Sie die Variable wie in vorher als Kleinbuchstaben mit:
typeset -l month
Mit bash's printfkönnen Sie die generierte Zeichenfolge automatisch in eine skalare Variable¹ einfügen, indem Sie -v:
$ printf -v month '%(%b)T'
$ printf 'It is %s\n' "${month,,}"
It is dec
¹ oder das Schlüsselelement 0 eines Arrays oder einer assoziativen Arrayvariablen
man datefür alle Formatierungsoptionen.