Mailinglist Archive: opensuse-de (1347 mails)

< Previous Next >
Re: Shell (echo "$VAR\\!"
  • From: Manfred Tremmel <Manfred.Tremmel@xxxxxx>
  • Date: Sun, 14 Feb 2010 14:02:44 +0100
  • Message-id: <201002141402.44997.Manfred.Tremmel@xxxxxx>
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\!"

--
Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/
| http://packman.links2linux.de/
Manfred | http://www.knightsoft-net.de
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >
References