Forum: PC-Programmierung [Linux] tr funktioniert in Script nicht


von Karl (Gast)


Lesenswert?

Hallo,

möchte in einem String die Leerzeichen durch LF ersetzen. In der Konsole 
funktioniert das auch prima, nur im Script nicht.
1
rawwochentagk="Montag|54 Dienstag|45 Mittwoch|60 Donnerstag|42 Freitag|34"
2
3
echo $rawwochentagk
4
5
wochentagk=$(echo $rawwochentagk | tr ' ' '\n')
6
7
echo $rawwochentagk > t1
8
echo $wochentagk > t2
9
10
echo Wochentag Konrolle:
11
echo -e $wochentagk

Habe mir die Dateien (t1, t2, nur zur Kontrolle) auch mal mit dem 
Hexeditor angeschaut, steht überall 0x20...

Hat jemand eine Idee??


Hab das unter cygwin und Ubuntu 10.04 probiert.

Gruß
Karl

von Stefan L. (Gast)


Lesenswert?

Versuchs mal mit:
1
echo Wochentag Konrolle:
2
echo -e "$wochentagk"

Stefan.

von Hc Z. (mizch)


Lesenswert?

Wenn Du in sh eine Stringvariable unverändert haben willst, dann musst 
Du sie immer in doppelte Anführungszeichen einschließen.  Das schützt 
sie vor einer Verarbeitung, wie sie auf der Kommandozeile sinnvoll ist, 
u.a. dem Splitten in ihre Elemente überall dort, wo Whitespace ist (\n 
gehört da mit dazu).

Darüber  bist Du soeben gestolpert.  sh hat die Variable zerlegt und 
echo hat die einzelnen Elemente, mit 1 Space getrennt, wieder 
zusammengefügt.

von Karl (Gast)


Lesenswert?

Jaa, besten Dank Stefan!
Wie kann man nur so blind sein...

von Karl (Gast)


Lesenswert?

@Hc Zimmerer

Genau, besten Dank :)

von Name (Gast)


Lesenswert?

Versuchs mal mit
echo Wochentag Kon t rolle:
...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.