Re: Parameter Expansion

Peter Stephenson <[email protected]>
Newsgroups gmane.comp.shells.zsh.devel,gmane.comp.shells.zsh.user
Message-ID <[email protected]>
> On 15/07/2025 16:01 BST Eric Cook <[email protected]> wrote:
> 
>  
> On 7/15/25 10:44 AM, Vin Shelton wrote:
> > I don't understand the order of parameter expansion. Consider the following example:
> > 
> > zsh -f
> > export HOME=/home/acs
> > smaug% export SCMROOT=/home/acs/scmroot
> > smaug% echo ${SCMROOT:s-$HOME/--}
> > 
> > This yields /home/acs/scmroot", but I expected "scmroot".
> > TIA,
> >   Vin Shelton
> > 
> 
> The history modifier doesn't create a new context where the parameter
> expansion code recurses and resolves any parameters within it's
> operands.
> It is searching for the literal string $HOME.

The fix is to use the parameter system's own substitution code, which
does recursively handle parameters.  The easiest one to use in this case
is:

echo ${SCMROOT#$HOME/}

There are more general substitution commands but this fits the bill
here.

pws
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.