ubuntuusers.de

Bash: Monat als Variable

Status: Gelöst | Ubuntu-Version: Server 12.04 (Precise Pangolin)
Antworten |

t-d-l

Anmeldungsdatum:
17. April 2017

Beiträge: 2

Hallo, als absoluter Anfänger beschäftige ich mich gerade mit bash scripten und habe folgendes Problem:

Ich hätte gerne die Ausgabe von date +%m in eine Variable geschrieben. Mein Script dazu sieht so aus:

#! /bin/sh

monat=date +%m
echo $monat

Die Ausgabe sieht leider so aus:

./test.sh: 3: ./test.sh: +%m: not found

Ich habs mit einfachen und zweifachen Anführungszeichen versucht und mit Klammern, jetzt gehen mir die Ideen aus. Was mach ich falsch, bzw. wie macht man das richtig?

TomTobin

Avatar von TomTobin

Anmeldungsdatum:
24. August 2007

Beiträge: 3101

Hallo t-d-l,

Willkommen im Forum ☺

#!/bin/sh

monat=$(date +%m)
echo $monat

Bitte beachte: var=$(befehl) und kein Leerzeichen bei #!/bin/sh

Gruß

Tom

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Außderdem gehört die Formatausgabe in Quotes. Also:

monat=$(date "+%m")

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

TomTobin schrieb:

Bitte beachte: [...] kein Leerzeichen bei #!/bin/sh

Tatsächlich ist das Leerzeichen kein Problem. Es gab sogar mal die Aussage, dass das Leerzeichen nötig ist, aber das war wohl ein Dokumentationsfehler (gefunden über diesen Artikel). Siehe auch hier.

t-d-l

(Themenstarter)

Anmeldungsdatum:
17. April 2017

Beiträge: 2

Prima, danke! hat geklappt.

Das ging ja schnell ☺

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

wxpte schrieb:

Außderdem gehört die Formatausgabe in Quotes. Also:

monat=$(date "+%m")

In diesem Fall ist es nicht nötig:

1
2
3
4
5
6
$ echo +%m
+%m
$ echo '+%m'
+%m
$ echo "+%m"
+%m

Aber generell ist bei Sonderzeichen schon Vorsicht geboten, z.B.

1
2
3
4
5
6
$ date +$foo:%m
:04
$ date "+$foo:%m"
:04
$ date '+$foo:%m'
$foo:04
Antworten |