[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Seltsames Verhalten von echo


On Fri, May 20, 2011 at 01:49:19AM +0200, Stephan Gromer wrote:
[...]
> echo '\begin{document}' >>"$CREATETEX"
[...]
> ^Hegin{document}$
[...]
> Was ich nicht verstehe ist, warum einige der \ durch seltsame Zeichen
> ersetzt wurden, die auch gleich noch weitere Zeichen "fressen". Die \
> sind doch alle in '' angegeben. Ich habe auch schon Zeilen geloescht, in

Die Freuden des Unix-Quotings.  Aber der Schluessel hier ist die
richtige Frage: "*Welches* echo verhaelt sich, na ja, komisch?".

Waehrend naemlich echo (1), also in der Regel /bin/echo in der Manpage
sagt

    -E     disable interpretation of backslash escapes (default)

ist das, was du bekommst, wenn du dein Skript so schreibst, wie du es
schreibst, das bash-builtin.  Ueber das erfaehrt man in help echo:


    `echo' interprets the following backslash-escaped characters:
      \a	alert (bell)
      \b	backspace

-- und da kommt das ^H her (der backspace).

Es gibt viele Moeglichkeiten, das zu fixen (%s#echo#/bin/echo im vi
ist eine davon), aber ich wuerde wahrscheinlich zu einem Here-document
raten, so wie das gemacht ist.  

Aber zwecks due diligence: Shellskripts als CGI-Backends verlangen
viel Sorgfalt bei der Input-Validierung, und wenn du Eingaben aus dem
Netz in TeX uebernimmst, solltest du dran denken, dass TeX
Turing-vollstaendig ist und Zugriff auf dein Dateisystem hat.

Gruesse,

          Demi

-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/