Re: Variable expansion inside of functions

Klaus Ethgen <[email protected]>
Newsgroups gmane.comp.shells.zsh.devel,gmane.comp.shells.zsh.user
Message-ID <aeOUljwEFHiGKZ5j@chil>
Hi

Am Sa den 18. Apr 2026 um 14:53 schrieb Aaron Schrab:
> >Is there any way to evaluate $i inside the function definition; but 
> >only that variable?
> 
> As far as I know, there isn't a way to do that.

I tried with an eval but that is horrible.

> Are you trying to do this only in zsh, or are you looking for something 
> that would work in bash as well? For just zsh, unless you've unset the 
> FUNCTION_ARGZERO option you should be able to use "$0" for that inside 
> of the function definition.

That is an idea. Works that way.

> Also, unless you've unset the MULTI_FUNC_DEF option you could also 
> eliminate the loop if not for the checking if the command exists. It 
> might be clearer to have the loop just build up a $cmds array (I'd call 
> it $commands, but zsh already defines that) of the ones that you want to 
> wrap and then define the functions outside the loop. I think which way 
> to do it is a question of taste.

I didn't know I can do it that way.

> And, with the default options (if SH_WORD_SPLIT isn't set) you can just 
> use $arg unquoted when calling the original command. You don't need the 
> quotes around $0 (or $i) either. Although I do tend to still quote 
> things to keep in the habit, since I often need to write scripts for 
> bash or even sh.

Yea, same here. I overly quote stuff, even if not needed.

>      (( $+commands[$i] )) && cmds+=$i

Sane solution for whence -p. I did not know $+... And I do not find it
in the documentation. Only ${{+...}} but that is about parameters and
not about arrays.

Regards
   Klaus
-- 
Klaus Ethgen                                       http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16            Klaus Ethgen <[email protected]>
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
signature.asc (application/pgp-signature, 728 B)
-----BEGIN PGP SIGNATURE-----
Comment: Charset: ISO-8859-1

iQHPBAABCgA5FiEE2oNkebTd5YKFiBG5fue2cNoeGfgFAmnjlIMbFIAAAAAABAAO
bWFudTIsMi41KzEuMTIsMiwyAAoJEH7ntnDaHhn4StgMAJyVQB3jTx/WNnpyoMZG
uncud1Qn/pKdKzhSCVgHPeA/g69OAiCka1gogkjKI2FgthLq9vhESQ353hsfZAVQ
mH9A2wXLEu8Mv+zTFJ+m8q9UbZZ5Bcw+gnu8hhmUHMubINzR2j5YGUaNvYJGZObj
usXh3+lYqkTJiy4mbOiKSeEl+3yTqvLvSC5WOCGfga0Do9MqeK9ZeBto6WmDgTG+
ObkTcGB3tzTrjCwPoVnWZBAq+nUj+QDk0EcbiPSBMgJoKHfjIhbVVFm3KuxWcN67
fQouzpBTYyr9sIIlsAA0EPtSFCgSulLmNpLUlXvaG0I7k5RwAbs5qEtCahEQEpDR
xv/GUl52/SR8TNvvtgGb+E5Tsfql2EIJjT/hpMx4DY0Cau7vdQv7oBu+SpFCfL4z
dm0bQfUlPsJP1qd5pfYeAgQ6sl2kVDEWIKq/MJN6M3TgDiQSTWSvrzSpv1Xq5Anr
KfIpMx9DpBOtw5S/kWpJvjqtQykj40qtKQs2mmBA+367hQ==
=Jh47
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.