On Sonntag, 14. Februar 2010 14:02:44 Manfred Tremmel wrote:
Am Sonntag, 14. Februar 2010 schrieb Stefan Plenert:
3.7.7 echo
$ echo "Hallo, Welt\\!" Hallo, Welt!
Das ist falsch
~> echo "Hallo, Welt\\!" Hallo, Welt\!
Das ist korrekt.
Ein Backtick escaped Sonderzeichen wie das Ausrufezeichen. Bei zweien escaped der erste den zweiten. Daraus folgt:
echo "Hallo, Welt!"
gibt nen fehler, weil das Ausrufezeichen eine spezielle Bedeutung hat
echo "Hallo, Welt\!"
escaped das Ausrufezeichen korrekt, die Ausgabe sollte "Hallo, Welt!" sein.
echo "Hallo, Welt\\!"
der erste Backtick bleibt stehen (wird angezeigt), der zweite escaped das Ausrufezeichen. IMHO Inkonsequentes Design, eigentlich sollte der erste Backtick den zweiten escapen und das Ausrufezeichen einen Fehler produzieren, aber da haben die Entwickler wohl anders gedacht.
(Shell-Skripte programmieren | 183)
Hier habe ich die Angabe hinter echo in Ausführungszeichen.
Sind die in der Shell-Skrpt-Progarmmierung notwendig?
Wenn Du keine Anführungszeichen verwendest, wird jedes durch Leerzeichen getrennte Word als einzelner Parameter übergeben. Mit Anführungszeichen sind alle zusammen ein Argument. Bei echo mag das noch das selbe Resultat erzeugen, bei anderen Shell Befehlen erlebst Du damit schnell böse Überraschungen (beliebtes Beispiel sind Pfad- und Dateiangaben mit Leerzeichen).
~> echo Herzlich willkommen, $KATZE! Herzlich willkommen, Felix!
Korrekt wäre wohl
echo "Herzlich willkommen, $KATZE\!"
Danke, schönes Wochenende Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org