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)