Hallo, Am Mon, 20 Jun 2005, Gerhard Meier schrieb:
On Sun, Jun 19, 2005 at 10:15:57PM +0200, Matthias Keller wrote:
for x in `ls -1 $path/ | sed -e 's/\.dd-.*$//' | uniq` ; do ... done
funktioniert soweit perfekt, AUSSER wenn ein filename einen leerschlag enthält, zB "test file.txt" dann wird "test" und "file.txt" separat behandelt...
Mit einer while Schleife:
ls -1 $path/ | sed -e 's/\.dd-.*$//' | uniq | while IFS= read i do ... done
Es soll explizit an Newlines getrennt werden, also sollte man das prinzipiell auch machen ( IFS=" "). Allerdings liest 'read' sowieso zeilenweise. ls "$path/" | sed -e 's/\.dd-.*$//' | uniq | while read -r name do echo "$name" done Oder eben explizit: ls "$path/" | sed -e 's/\.dd-.*$//' | uniq | while IFS=" " read -r name do echo "$name" done Siehe 'help read'. Und vgl. ls "$path/" | sed -e 's/\.dd-.*$//' | uniq | while IFS="." read -r -a name do echo "${name[*]}" done -dnh -- SprintLINK makes proton decay look fast. -- Jude Charles Giampaolo