Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Bug on parameter expansion when set -u is in effect
- X-seq: zsh-workers 54172
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: Ronald Fischer <ynnor@xxxxx>
- Cc: zsh-workers@xxxxxxx
- Subject: Re: Bug on parameter expansion when set -u is in effect
- Date: Thu, 5 Feb 2026 13:55:50 +0100
- Arc-authentication-results: i=1; mx.google.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=XJ4Jm+xAW5DP5uzCLLmqcm/bpzQGz2zLzsPcDi7sQxs=; fh=LhCnYWunrJSo2d6Nevt51Jnrb/+l4qsaYDJjxc/Tav8=; b=N4vVIuW6clrjj/1EOCvMiEL2NH1id3TsHwNMGHi4mVvdDUFKIjuEJv4iHNaR+pdcv7 en6eAWOwn/dLK76K4EgFEDv1Eumba/k+QXy3VqSA2JL1Is9ODq4GbrFxPWKBlQDWcIp8 jv16EstTQ9SF7BOcV2/DPslvoRFR4M2G1JOOFey6Q+bVwTsvPTOuhF1eZK8efkkfhksE /mhIhBrYEpbAe2y+So7WkSpT2cQfYDOc7oPapb/FmAp4STAZqElsujJN7twHWpStK3NF rI/+0eihBRd+lQb0HJyASYZ1MX+ytq/33tR7qInmQ/l1dsskCCmKdB6ifY1S/AZz8SDF r6Ag==; darn=zsh.org
- Arc-seal: i=1; a=rsa-sha256; t=1770296163; cv=none; d=google.com; s=arc-20240605; b=C1gsZQXjRGNF6AImCCBsQP+y4ye3zp+r7OTCZpAghP/jy0LNelTi3XeXtzDgl2Mkh3 PJE05hN+j1XSmGDvQ4fgPU9h1R4oRiXYxDlkZrt2AkPCS/IMRP6aIvdyaSFcpXPKTJKO 3djMpEQzMWEuqb1NFooB4lPiRv1WiVsMoizhCgAj9vA9Yrf+Bfq5k75xXrao8SbnRkam CyKDCDomsrgRf7glHNNzLuyVztM00y+cmpcEE9k7QrSs20hJwqoloptfrcMqy1WJ6zHa Xl7aQOjY4BC1e/x8vEO9DEkSBLFPXFGn92pzuSU55KC3f6jwYFWJEc8ulY8Cqfro3cCx Vi2g==
- Archived-at: <https://zsh.org/workers/54172>
- In-reply-to: <c0faa0a6-4b7d-4820-9add-ca1c99e2aef6@app.fastmail.com>
- List-id: <zsh-workers.zsh.org>
- References: <c0faa0a6-4b7d-4820-9add-ca1c99e2aef6@app.fastmail.com>
On Thu, Feb 5, 2026 at 12:11 PM Ronald Fischer <ynnor@xxxxx> wrote:
>
> Using zsh 5.8.1 (x86_64-apple-darwin21.0)
>
> Consider the following fragment of code:
>
> kv="a b"
> k=${kv%% *}
> v=${kv##${k} #}
>
> This would set k to "a" and v to "b", and indeed usually does so.
>
> However, when I run this code with
>
> set -u
>
> in effect, the variable v is set to "a b" instead of "b".
>
> I think this is a bug, because all variables are assigned a value before they are expanded, so -u should not have any effect.
It would be, but it is in fact not affected by set -u. Did you forget
to setopt extendedglob in your test environment?
% zsh -fc 'kv="a b" ;k=${kv%% *}; v=${kv##${k} #}; echo $v'
a b
% zsh -fc 'setopt extendedglob; kv="a b" ;k=${kv%% *}; v=${kv##${k}
#}; echo $v'
b
% zsh -fc 'setopt nounset extendedglob; kv="a b" ;k=${kv%% *};
v=${kv##${k} #}; echo $v'
b
--
Mikael Magnusson
Messages sorted by:
Reverse Date,
Date,
Thread,
Author