Re: Seltsames Verhalten von echo

Autor: Markus Demleitner <msdemlei_at_ari.uni-heidelberg.de>
Datum: Fri, 20 May 2011 08:03:39 +0200
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 gelöscht, in

Die Freuden des Unix-Quotings.  Aber der Schlüssel hier ist die
richtige Frage: "*Welches* echo verhält sich, na ja, komisch?".

Während nämlich 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.  Über das erfährt 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 Möglichkeiten, das zu fixen (%s#echo#/bin/echo im vi
ist eine davon), aber ich würde 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 übernimmst, solltest du dran denken, dass TeX
Turing-vollständig ist und Zugriff auf dein Dateisystem hat.

Grüße,

          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/
Empfangen am 20.05.2011

Dieses Archiv wurde generiert von hypermail 2.2.0 : 20.05.2011 CEST