echo ?!?

Post Reply
Message
Author
arno

echo ?!?

#1 Post by arno »

Hallo!

Ganz blöde Frage: Wie gebe ich ein Backspace aus? Ein "echo \b" gibt mir ein b aus. Auch ein "echo -e \b" macht das selbe. Wo ist der Fehler, dass er die Sonderzeichen nicht interpretiert?

Ich benutze die bash unter SuSE 8.2.

Jochen

Re: echo ?!?

#2 Post by Jochen »

Die Shell sieht das "\<!--no-->" als Entwertungszeichen an, entwertet das nachfolgende Zeichen (das b - also eigentlich keinerlei Funktion) und ruft erst dann echo mit "b" als Parameter auf. Die "Backslasherzeugung" macht aber das echo-Kommando. Daher muss das "\<!--no-->" bei echo ankommen und darf nicht entfernt werden.

Ruf echo auf wie folgt:<pre>echo -e \<!--no-->\<!--no-->b</pre>oder <pre>echo -e "\<!--no-->b"</pre>oder<pre>echo -e '\<!--no-->b'</pre>So haut es hin. Zu den unterschiedlichen Schreibweisen schlägst Du am besten mal in die Man-Page der bash beim Thema "Quoting" nach.

Jochen

arno

Re: echo ?!?

#3 Post by arno »

So dachte ich auch, dass es funktionieren sollte. Tut es aber leider nicht.
Ich bin wirklich ratlos.

Arno

Jochen

Re: echo ?!?

#4 Post by Jochen »

?!? Tut es aber doch... bash 2.05a.irgendwas.

Probier mal folgendes:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">echo -en "12345\<!--no-->b\<!--no-->b\<!--no-->b" ; read A</font><hr></pre></blockquote>Wenn Du das so in die Shell tippst und abschickst, sollte der Cursor auf der 3 stehen (und auf Dein Return warten). Das heisst aber nicht, dass "345" durch das Backspace gelöscht werden! Wenn Du so was möchtest, ist es einfacher, immer eine ganze Zeile zu überschreiben: <pre>echo -en "123\<!--no-->r" ; sleep 1 ; echo "ABC"</pre>Hier überschreibt das ABC das 123, da das CR (\<!--no-->r, Carriage Return) den Cursor wieder an den Anfag der Zeile setzt.

Jochen

arno

Re: echo ?!?

#5 Post by arno »

Hallo!

OBERAUA!!!!! Da bin ich aber einem Irrtum aufgesessen. Ich bin davon ausgegangen, dass der echo-Prozess einfach den Tastaturcode der BS-Taste an die Shell übergibt und somit das letzte Zeichen auch gelöscht wird. Das war wohl ein Irrtum.

Auf jeden Fall vielen Dank für Deine Hilfe!

Arno.

Post Reply