echo ist nicht immer gleich echo - Internal Server Error

Erstellt: 07.04.2008 00:08

Fast ein wenig schmerzhaft mussten wir feststellen, dass ein echo unter Ubuntu (7.04) nicht vollkommen gleich reagiert wie unter Debian (testing) obwohl es die gleiche Versionsnummer und Herkunft aufweist (GNU sh utils 2.0.11). Es handelte sich um folgendes Skript, welches unter Ubuntu gestartet aus dem Browser mit dem lokalen Apache-Webserver ohne Probleme lief:

#!/bin/sh
echo "Content-type: text/htmln"
# Irgendwelche Ausgaben, hier verkürzt als Beispiel
echo "<html>"
echo "<head>"
echo "</head>"
echo "<body>"
echo "<p>Hello World</p>"
echo "</body>"
echo "</html>"

Startet man dieses Script im Browser über den lokalen Apache-Webserver erfolgt nur ein "Internal Server Error". Ein Blick in die Log-Datei /var/log/apache2/error.log verrät uns:

[...] malformed header from script. Bad header =<html>: [...]

Woran kann das liegen? Nach der Angabe des Dokumententypes muss ein Zeilenumbruch erfolgen. Dieser wird mit "n" angegeben. Ubuntu nimmt diese Angabe ohne weiteres entgegen. Debian nicht, deshalb nimmt es auch die nächste(n) Zeile(n) noch zum Dokumententyp.
Was Debian macht, ist im Gegensatz zu dem was Ubuntu macht wohl auch richtig, denn schaut man in den man-Pages, stellt man fest, dass es einen zusätzlichen Parameter braucht, damit "n" Interpretiert wird.
Aus der man-Page zu echo:

-e ermögliche Interpretation der -Notationen unten

Fügt man den Parameter -e in das Skript ein, funktioniert das ganze ohne Fehlermeldung:

#!/bin/sh
echo -e "Content-type: text/htmln"
[...]

Tagged: Bash Debian Linux


Ähnliche Artikel:
Thinkpad mit Intel Graphikkarte - VGA-Ausgang ein-, und ausschalten (mit Fn+7)
Email mit Anhang aus der Konsole versenden
Standardeditor in Debian ändern
"apropos" findet nichts passendes
Crontab temporär mit anderem Editor editieren

« Vorheriger Eintrag

Nächster Eintrag »

Kommentare

Verfasse den ersten Kommentar!

Kommentar verfassen