ich kapier echo nicht!!!

Post Reply
Message
Author
Max

ich kapier echo nicht!!!

#1 Post by Max »

eigentlich ganz einfach....
ein kleines skript
welche mittels echo diverses und übergebene Variablen in ein Text-File packt.
Das blöde dabei in einer Zeile muss ein Back-Slash am Anfang auftauchen und dahinter die übergebene Variable ($1).

in etwa so:
echo -e "blablaba
\<!--no-->$1" > .forward

Klappt auch wunderbar! Ausser wenn $1 mit n Anfängt, dann interpretiert er das als Newline. Warum??
Das erste \ sollte das zweite entwerten, warum tut er das trotzdem?
Wenn ich 3 \<!--no-->\ schreibe würde er auch ein nachfolgendes n ignorieren allerdings, schreibt er dann $1 statt den Inhalt der Variablen.
zumindietastaturbeissen

Descartes

Re: ich kapier echo nicht!!!

#2 Post by Descartes »

> Das blöde dabei in einer Zeile muss ein Back-Slash am Anfang auftauchen
Zeilenumbruch mit \<!--no-->n danach den Backslash quoten \<!--no-->\

> und dahinter die übergebene Variable ($1).
also so was:

echo -e "blablaba \<!--no-->n\<!--no-->\$1" > .forward

verpackt in ein script und aufgerufen mit
<scriptname> Hallo
ergibt das dann folgenden Output:
blablabla
\<!--no-->Hallo

Max

Re: ich kapier echo nicht!!!

#3 Post by Max »

mist meine \ fehlen im Ursprungsposting....
Kurz:
Genauso habe ich es gemacht, Descartes
Nur geht so nicht!
Denn wenn du jetzt <scriptname> nein machst
kommt statt wie erwartet
blabla

ein

folgendes raus
blabla

ein


Noch Ideen?

Max

Re: ich kapier echo nicht!!!

#4 Post by Max »

argh!!
die Forensoft interpretier ebenfalls backslash n als newline.
Sorry

Nochmal: bei dem Aufruf <scriptname> nein
sollte rauskommen:
blabla
\<!--no-->nein

es kommt aber raus:
blabla

ein

Jochen

Re: ich kapier echo nicht!!!

#5 Post by Jochen »

Lass doch einfach das "-e" als Argument zu echo weg! Damit <i>aktivierst</i> Du ja gerade die Interpretation von
. Die Variablensubstionübernimmt die Shell, deswegen musst Du "-e" für echo nicht setzen.

Jochen

max

Re: ich kapier echo nicht!!!

#6 Post by max »

und wie bekomme ich dann den Zeilenumbruch hin?
Es muss ja in 2 Zeilen stehen.

Aber jetzt will ich es wirklich wissen.
Ist das ein Bug in echo ??
Laut Doku muss man 2 Backslashes (mit Schalter -e) nehmen um eins darzustellen.
Funktioniert auch.Ein Backslash entwertet erstmal folgendes Zeichen damit es nicht wie eine normales Zeichen dargestellt wird.
Aber 2 Backslashes und ein $e, wenn $e ein interpretierbares Zeichen wie z.B. n enthält wird es wieder ausgeführt.

Das ist eigentlich nicht so gedacht.
Leider ist die man-Page ja sehr mager, und echo ist ein Standard-Befehl. So denke ich doch, das ich nicht der erste bin dem das auffällt.

Max

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: ich kapier echo nicht!!!

#7 Post by bakunin »

Hi!

> und wie bekomme ich dann den Zeilenumbruch hin?
> Es muss ja in 2 Zeilen stehen.

echo "hallo
welt"

funktioniert wunderbar. Außerdem ginge

echo -e "hallo
" "welt"

auch.

Cheers,
Wolfgang

Jochen

Re: ich kapier echo nicht!!!

#8 Post by Jochen »

Aahhh, jetzt ist mir ein Licht aufgegangen!

Nein, kein Bug, alles in Ordnung! Folgendermassen: In "" geht die Shell selbst ja erst mal an die Backslashes dran! In Deiner Sequenz "blablaba
\<!--no-->$1" macht die Shell aus den zwei Backslashes <i>einen</i>, und wenn $1 dann "n" enthält, wird ein Newline gemacht. Also verwende 4 Backslashes: Die Shell macht aus den ersten beiden einen, aus den zweiten beiden einen, und echo kriegt 2 Backslashes hintereinander zu sehen, macht einen draus und nimmt <i>den</i> dann wörtlich, ohne ein folgendes "n" dann zu Backslash-n zu machen.

OK?

Max

Re: ich kapier echo nicht!!!

#9 Post by Max »

ich habe es mittlerweile mit 2 echo Befehlen gelößt.
aber echo
Finde ich aber sehr unbefriedigend, weil es nicht so funktioniert wie es sollte.

Thanx Leute
Max

Max

Re: ich kapier echo nicht!!!

#10 Post by Max »

Supi!
Jetzt kapier ich!
sieht zwar völlig krank aus aber ist jetzt korrekt.

Danke Jochen.

Post Reply