bash: Geht \0 nicht als IFS?

25/01/2009 - 17:57 von Hauke Laging | Report spam
Moin,

dem Subject ist eigentlich nichts hinzuzufügen. In der man page zu
bash finde ich dazu nix. Der Thread "Elemente aus Find auslesen"
brachte mich auf folgende Idee:

IFS=$'\0'
paths=($(find . -maxdepth 1 -name "e*" -print0))

Bis hierhin: ganz toll, die Idee

Dann kommt die Praxis...

echo ${paths[0]}
./error.log.bz2./error.log

Da wird also gar nix getrennt. Ich vermute, bash kann peinlicherweise
\0 nicht als IFS-Zeichen, aber vielleicht habe ich mich ja auch bloß
dumm angestellt...


CU

Hauke
http://www.hauke-laging.de/ideen/
 

Lesen sie die antworten

#1 Sven Mascheck
25/01/2009 - 19:30 | Warnen spam
Hauke Laging wrote:

IFS=$'\0'



Eigentlich ist ASCII-NULL (außer natürlich in Pipes) in Daten
gar nichtvorgesehen (siehe schon die Definition eines "text file")
und funktioniert nur als Ausnahme - je nach Shell, z.B. zsh,
vielleicht noch etwas besser.

paths=($(find . -maxdepth 1 -name "e*" -print0))



das ist übrigens auch der Grund, warum -print0
vom Konzept her fragwürdig ist - die Ausgabe ist
kein "text file" mehr, auf dem mit den allgemeinen
Utilities gearbeitet werden kann.

Ähnliche fragen