Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Positional parameters with more than one space
- X-seq: zsh-users 7030
- From: Bob Schmertz <rschmertz@xxxxxxxxx>
- To: David "Gómez" <david@xxxxxxxxxxxx>, Zsh-users <zsh-users@xxxxxxxxxx>
- Subject: Re: Positional parameters with more than one space
- Date: Thu, 29 Jan 2004 16:23:24 -0800 (PST)
- In-reply-to: <20040129225017.GA9097@fargo>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- Reply-to: robert.schmertz@xxxxxxxxxxxxxxxx
--- 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