Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Ex-bash script for optimisation
- X-seq: zsh-users 8599
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: zsh-users@xxxxxxxxxx
- Subject: Re: Ex-bash script for optimisation
- Date: Sun, 13 Mar 2005 19:23:52 +0000
- In-reply-to: <tf29319rb8a0edm1h3r63612p9h7nbilcr@xxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- References: <62u0315opl6kubat89fmdng5dg4m4370o0@xxxxxxx> <42308ED6.6030007@xxxxxxx> <1050311044847.ZM9336@xxxxxxxxxxxxxxxxxxxxxxx> <tf29319rb8a0edm1h3r63612p9h7nbilcr@xxxxxxx>
On Mar 13, 6:46pm, zzapper wrote:
} Subject: Re: Ex-bash script for optimisation
}
} Only the first example worked for me, but I found $1 could be a pattern
I think you're misunderstanding what happens.
I don't know what the name of your script/function is, so I'll "vit" for
purposes of example (short for "vim text"). Suppose there is a directory
containing the files
file.aux file.exe file.gif file.txt
(1) If you give the command
vit file*
then zsh will first expand the pattern to
vit file.aux file.exe file.gif file.txt
and next call the function "vit" which will do (shortened for simplicity)
filelst=( *file.aux*~*.(aux|gif|exe) )
and will eventually print "Sorry no file matched *file.aux*". Note that
vit did nothing with file.exe file.gif file.txt, which are $2 $3 $4.
(2) If instead you tried
vit f*t
the result is
vit file.txt
and thus
filelst=( *file.txt*~*.(aux|gif|exe) )
(3) If you quote the pattern
vit 'file*'
then vit does
filelst=( *file\**~*.(aux|gif|exe) )
and you get "Sorry no file matched *file**" which might be confusing.
What I meant about allowing $1 to be a pattern is, with ${~1} in the
filelst assignment expression you can pass the pattern quoted as in (3),
and internally to vit the pattern is expanded and you'd find file.txt
as desired.
What I meant about multiple arguments to the script is, with ${^*} in
the filelst assignment, example (1) becomes
filelst=( *file.aux*~*.(aux|gif|exe)
*file.exe*~*.(aux|gif|exe)
*file.gif*~*.(aux|gif|exe)
*file.txt*~*.(aux|gif|exe) )
which again finds file.txt as desired.
I'm hoping you can extrapolate from there to what I meant by "multiple
patterns".
} and i could set a second parameter w/o problem
I'm afraid I don't understand what you mean by that. "Set" how? And
is anything useful done with the "second parameter"? If so, what? Or
is it just silently ignored?
Messages sorted by:
Reverse Date,
Date,
Thread,
Author