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:

for file in "$@"
  /bin/echo $file
  /bin/echo "$file"
# --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 :-)

Bob Schmertz

Do you Yahoo!?
Yahoo! SiteBuilder - Free web site building tool. Try it!

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