echo-Befehl mit Variable und Ausrufezeichen

21/11/2007 - 22:29 von Thomas Wiedmann | Report spam
Hallo,

es geht um folgendes echo-Statement:
echo "Das aktuelle Verzeichnis ist $PWD!"

Ruft man dieses Statement in einer Konsole direkt als Befehl auf, wird
-bash: !": event not found
zurückgemeldet.

Führt man dagegen dasselbe Statement über ein Bash-Shellskript
(GNU bash, version 2.05b.0(1)-release - i586-suse-linux)
aus, erfolgt die Ausgabe korrekt mit:
Das aktuelle Verzeichnis ist /tmp/test!

Warum funktioniert das echo-Statement in den Anführungszeichen nicht als
"Direkt-Aufruf" (d. h. per Konsole und nicht per Shellskript), jedoch
dagegen im Bash-Shellskript?

Wann ist es eigentlich erforderlich, den Text, den echo ausgeben soll, in
doppelte Anführungszeichen zu setzen und wann kann man sie weglassen (denn
damit funktioniert's auch beim Direkt-Aufruf)?

Wie kann man in diesem Fall - also wenn man beim Direktaufruf den
Ausgabetext in doppelte Anführungszeichen setzt - sowohl eine Variable (im
Beispielfall $PWD) auflösen und z. B. ein Ausrufezeichen korrekt mit
ausgeben?


Danke für alle guten Tips.

Thomas Wiedmann
 

Lesen sie die antworten

#1 Franz Oppermann
21/11/2007 - 22:48 | Warnen spam
Thomas Wiedmann wrote:

Hallo,

es geht um folgendes echo-Statement:
echo "Das aktuelle Verzeichnis ist $PWD!"

Ruft man dieses Statement in einer Konsole direkt als Befehl auf, wird
-bash: !": event not found
zurückgemeldet.




man bash, abschnitt "History expansion"

echo "Das aktuelle Verzeichnis ist $PWD"'!'

Führt man dagegen dasselbe Statement über ein Bash-Shellskript
(GNU bash, version 2.05b.0(1)-release - i586-suse-linux)
aus, erfolgt die Ausgabe korrekt mit:
Das aktuelle Verzeichnis ist /tmp/test!

Warum funktioniert das echo-Statement in den Anführungszeichen nicht als
"Direkt-Aufruf" (d. h. per Konsole und nicht per Shellskript), jedoch
dagegen im Bash-Shellskript?

Wann ist es eigentlich erforderlich, den Text, den echo ausgeben soll, in
doppelte Anführungszeichen zu setzen und wann kann man sie weglassen (denn
damit funktioniert's auch beim Direkt-Aufruf)?

Wie kann man in diesem Fall - also wenn man beim Direktaufruf den
Ausgabetext in doppelte Anführungszeichen setzt - sowohl eine Variable (im
Beispielfall $PWD) auflösen und z. B. ein Ausrufezeichen korrekt mit
ausgeben?


Danke für alle guten Tips.

Thomas Wiedmann



Franz.

Ähnliche fragen