Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Positional parameters with more than one space



--- David Gómez <david@xxxxxxxxxxxx> 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/



Messages sorted by: Reverse Date, Date, Thread, Author