--- David Gómez wrote: > Hi all ;), > > I'm coding a shell function that receives several files as parameters. > These > files usually will have spaces in its names, so i want this function to > work correctly with spaces. > > I'm using the $@ array to iterate thru all parameters, with a for loop: > > for i in "$@"; do > something > done > > And it works fine, except when a file has more that one space in its > name. > I mean, if one of the files is "more than one space", after the $@ > expansion it transforms to "more that one space" which obviously > doesn't > exists. How can i avoid this? > You haven't given us enough info about where the parameters are coming from (i.e., how you're calling your script) or what you're doing with them inside the loop. Here is a complete sample script called check_spaces.zsh: #!/bin/zsh for file in "$@" do /bin/echo $file /bin/echo "$file" done # --end-- If I call it thus: check_spaces.zsh * I get two spaces for a file that has two consecutive spaces in its name. If I run it with bash, however, I get consolidated spaces in the output of the first echo line, without the parameter quoted. In short, I don't know why you're having problems :-) ===== Cheers, Bob Schmertz __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free web site building tool. Try it! http://webhosting.yahoo.com/ps/sb/