[gelöst] In Variable Kleinbuchstaben zu Großbuchstaben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

[gelöst] In Variable Kleinbuchstaben zu Großbuchstaben

Beitrag von joe2017 » 11.01.2019 11:07:39

Hallo zusammen,

ich habe ein kleines Problem und finde meinen Fehler nicht. Vielleicht sieht jemand was ich falsch mache.
Ich versuche einfach nur innerhalb meiner Variable meine Kleinbuchstaben zu Großbuchstaben umzuwandeln.
Wenn ich das wie folgt mache funktioniert das:

Code: Alles auswählen

var1=test
var2=${var1^^}
echo $var1
test

echo $var2
TEST

echo "$var2 123"
TEST 123
Wenn ich das wie folgt versuche (hiermit lese ich die MAC Adresse der aktiven Netzwerkkarte aus), erhalte ich etwas ganz seltsames:

Code: Alles auswählen

var3=("$(ip -c addr show eth0 | grep ether | awk '{print toupper($2)}')")
var4=${var3^^}
echo $var3
a1:a2:a3:a4:a5:a6

echo "$var3 1234"
a1:a2:a3:a4:a5:a6 1234

echo $var4
A1:A2:A3:A4:A5:A6

echo "$var4 1234"
 1234:A3:A4:A5:A6
Hat einer eine Idee was hier passiert. Wenn ich die Variable in einem Script verwende, erhalte ich auch immer eine Fehlermeldung. Als ob meine Variable leer wäre?
Zuletzt geändert von joe2017 am 11.01.2019 11:36:44, insgesamt 1-mal geändert.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: In Variable Kleinbuchstaben zu Großbuchstaben

Beitrag von eggy » 11.01.2019 11:23:21

leicht OT:
Wozu das -c? Du siehst Die Farbe ja eh nicht. Auch das grep ist überflüssig, awk kann selbst selektieren.

Code: Alles auswählen

ip a s eth0 | awk '/ether/{print toupper($2)}'

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: In Variable Kleinbuchstaben zu Großbuchstaben

Beitrag von MSfree » 11.01.2019 11:23:42

joe2017 hat geschrieben: ↑ zum Beitrag ↑
11.01.2019 11:07:39

Code: Alles auswählen

var3=("$(ip -c addr show eth0 | grep ether | awk '{print toupper($2)}')")
Die Zeile läßt sich bei mir nicht ausführen, "-c" kennt mein ip (Debian Jessie) gar nicht. Wenn ich "-c" weglasse, läuft das durch und liefert die MAC-Adresse in Großbuchstaben in var3.

Warum willst du dann var3 nochmal in Großbuchstaben konvertieren?

Zum Rest des Problems sollte du das Skript selbst posten, ohne die Zwischenausgaben.

reox
Beiträge: 2459
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: In Variable Kleinbuchstaben zu Großbuchstaben

Beitrag von reox » 11.01.2019 11:25:26

-c ist für farbe.
DH dein String enthält dann Color Escape codes. Die verursachen dann vermutlich das verrutschen.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: In Variable Kleinbuchstaben zu Großbuchstaben

Beitrag von joe2017 » 11.01.2019 11:33:39

Ohhh ich seh gerade, dass ich die falsche Zeile kopiert hatte.
Das war mein zweiter Test

Code: Alles auswählen

var3=("$(ip -c addr show eth0 | grep ether | awk '{print toupper($2)}')")
Das war die Originale

Code: Alles auswählen

var3=("$(ip -c addr show eth0 | grep ether | awk '{print $2}')")
Klar, das -c ist überflüssig. Das kam einfach nur aus der Gewohnheit heraus.
Zuletzt geändert von joe2017 am 11.01.2019 11:36:30, insgesamt 1-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: In Variable Kleinbuchstaben zu Großbuchstaben

Beitrag von joe2017 » 11.01.2019 11:36:00

Und natürlich lag es auch an dem "-c"!!!
Da muss man erstmal drauf kommen.

Vielen Dank.
Ich war schon am durchdrehen! :hail:

Antworten