Hi, wahrscheinlich seh ich den Wald vor lauter Bäumen nicht: ----------------------------------------------------------------------- papa@castor:~/test> rm * papa@castor:~/test> echo Test >"aaa bbb" papa@castor:~/test> ls aaa bbb papa@castor:~/test> cat "aaa bbb" Test papa@castor:~/test> var=`ls` papa@castor:~/test> echo $var aaa bbb papa@castor:~/test> cat $var cat: aaa: Datei oder Verzeichnis nicht gefunden cat: bbb: Datei oder Verzeichnis nicht gefunden papa@castor:~/test> var=\"`ls`\" papa@castor:~/test> echo $var "aaa bbb" papa@castor:~/test> cat $var cat: "aaa: Datei oder Verzeichnis nicht gefunden cat: bbb": Datei oder Verzeichnis nicht gefunden papa@castor:~/test> var=aaa\\\ bbb papa@castor:~/test> echo $var aaa\ bbb papa@castor:~/test> cat $var cat: aaa\: Datei oder Verzeichnis nicht gefunden cat: bbb: Datei oder Verzeichnis nicht gefunden ----------------------------------------------------------------------- Jetzt in ich mit meinem Latein am Ende... Wie krieg ich den Filenamen "aaa bbb" in $var so rein, dass der cat $var klappt? Alfred
Moin, Alfred Reinhard schrieb:
Wie krieg ich den Filenamen "aaa bbb" in $var so rein, dass der cat $var klappt?
Versuch mal ein cat "$var" Leerzeichen sind diese kleinen Quälgeister, die die Skript- Programmierung oftmals kompliziert machen. Man muß immer daran denken, daß ein Dateiname die unmöglichsten Sonderzeichen enthalten kann und ein solcher Dateiname dann bei Verwendung immer richtig quotiert werden muß. -- Gruß, Patrick
Am Donnerstag, 27. März 2003 22:27 schrieb Andre Heine:
Hi Alfred,
Am Donnerstag, 27. März 2003 21:58 schrieb Alfred Reinhard:
Wie krieg ich den Filenamen "aaa bbb" in $var so rein, dass der cat $var klappt?
Ich dachte immer, das sei eine M$ Seuche.
*SCNR*
Andre
ähm.... die Files (mein Beispiel war nur vereinfacht) liegen auf einem Windows-Server und sind mit mit smbmount eingebunden :-))) Alfred
Hallo, On Thu, 27 Mar 2003, Alfred Reinhard wrote:
wahrscheinlich seh ich den Wald vor lauter Bäumen nicht:
Jup.
papa@castor:~/test> echo Test >"aaa bbb" papa@castor:~/test> ls aaa bbb
Hier ist in dem Fall ein 'ls -1b' sinnvoll...
papa@castor:~/test> cat "aaa bbb" Test papa@castor:~/test> var=`ls` papa@castor:~/test> echo $var aaa bbb
$var enthaelt nun einen string, den die Shell expandiert(!) dann an 'echo' weiterreicht. 'echo' sieht also (einzelne Argumente mit {} geklammert): echo {aaa} {bbb} Ergebnis s.o.
papa@castor:~/test> cat $var cat: aaa: Datei oder Verzeichnis nicht gefunden cat: bbb: Datei oder Verzeichnis nicht gefunden
s.o. Allerdings behandelt 'cat' einzelne Argumente anders als echo ;) Verwende 'cat "$var"'. Das expandiert die shell zu: cat {aaa bbb}
papa@castor:~/test> var=\"`ls`\" papa@castor:~/test> echo $var "aaa bbb"
$var enthaelt den string(!) {"aaa bbb"}
papa@castor:~/test> cat $var
Die shell expandiert das _eine_ Argument {$var}, da nicht gequoted zu 2 Argumenten (aufgetrennt an den in $IFS enthaltenen Zeichen) zu: cat {"aaa} {bbb"}
cat: "aaa: Datei oder Verzeichnis nicht gefunden cat: bbb": Datei oder Verzeichnis nicht gefunden
Siehste? Du willst: 'var="`ls`"; cat "$var"'
papa@castor:~/test> var=aaa\\\ bbb
$var enthaelt den string(!) {aaa\ bbb}. Die Datei heisst aber {aaa bbb}!
papa@castor:~/test> echo $var aaa\ bbb papa@castor:~/test> cat $var
Hier expandiert die shell $var zu: cat {aaa\} {bbb}
cat: aaa\: Datei oder Verzeichnis nicht gefunden ^ siehste? cat: bbb: Datei oder Verzeichnis nicht gefunden
s.o. du willst 'var="aaa bbb"; cat "$var"' verwenden
Jetzt in ich mit meinem Latein am Ende...
Lese bitte mal sorgfaeltig die Abschnitte zu "Expansion" in 'man bash'... *eg*
Wie krieg ich den Filenamen "aaa bbb" in $var so rein, dass der cat $var klappt?
s.o. -dnh -- 147: Fortran Makrosprache für ein I/O-Verhinderungssystem (Arno Eigenwillig)
participants (4)
-
Alfred Reinhard
-
Andre Heine
-
David Haller
-
patrick_hess@t-online.de