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

Re: Slightly OT: Bash-Script / Zeilenumbrueche



Gregor Schneider <rc46fi@googlemail.com> (Mi 27 Feb 2008 21:21:48 CET):
> Hallo zusammen,
> 
> ich kriege hier bald zuviel.
> 
> Ich lese per "while...do read" eine HTML-Datei, die keine
> DOS-Zeilenumbrueche (^M) enthaelt, ein, und eine simple "echo"-Ausgabe
> haengt mir diese dann rein.

Woher weißt Du das? (Ich meine, wie hast Du das ermittelt? Und woher
weißt Du, daß Du in Abhängigkeit von genau dieser einen "echo"-Zeile


  echo "<IMG > src=\"/foo/bar.jpg\" border=0 height=0 width=0>" \
    >> ${DEST}/${HTML_DIR}/$(basename ${HTML_FILE})

dann doch welche drin hast?

(Abgesehen davon, daß Dein Problem sich auch sicher anders lösen ließe,
aber das war ja nicht Deine Frage :))

> </style><script type="text/javascript" language="javascript1.2"
> src="whmsg.js"></script>^M
> <script type="text/javascript" language="javascript" src="whver.js"></script>^M
...
> 
> und hier, wie es ohne die zusaetzliche Zeileinausgabe per "echo"
> rauskommt (also wie es sein sollte):
> 
> </style><script type="text/javascript" language="javascript1.2"
> src="whmsg.js"></script>
...

> 
> Interessant ist zu sehen, dass in der zusaetzlich ausgegebenen Zeile
> kein DOS-Umbruch ausgegeben wird.

Das ^M ist das "0x0d" (\r), also nur eine Hälfte des Dos-\r\n.

Ich vermute, daß Du mit dem vim diese ^M siehst. Und der macht das genau
dann, wenn eine Unix-Zeile dort im Text enthalten ist, dann meint er,
daß es fileformat=unix ist, und das ^M ein ganz normales Zeichen sei.

Ein Unix-echo wird nie einen \r\n schreiben, sonden immer nur ein \n,
außer Du wünschst Dir das:

Vergleiche

    echo -e ''   | xxd
    echo -e '\r' | xxd

-- 
Heiko

Attachment: signature.asc
Description: Digital signature


Reply to: