[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: set -u not working as expected
From: |
Lawrence Velázquez |
Subject: |
Re: set -u not working as expected |
Date: |
Sun, 2 Aug 2020 01:12:56 -0400 |
> On Aug 1, 2020, at 8:47 PM, Lawrence Velázquez <vq@larryv.me> wrote:
>
> Presumably none of these shells implements u+=(t) as u=("${u[@]}" t).
Granted, they do disagree on ${u[@]}.
% bash -c 'set -u; unset u; u=("${u[@]}" t); typeset -p u'
declare -a u=([0]="t")
% ksh -c 'set -u; unset u; u=("${u[@]}" t); typeset -p u'
typeset -a u=(t)
% zsh -c 'set -u; unset u; u=("${u[@]}" t); typeset -p u'
zsh:1: u[@]: parameter not set
> I haven't seen the code for arithmetic expansion, but I assume it
> treats v+=1 as morally equivalent to v=${v}+1 (à la C99). Thus there
> *is* an expansion, which fails under set -u. Regardless of the
> particulars, ksh and zsh again agree:
>
> % bash -c 'set -u; unset v; let v+=1; printf "<%s>\\n" "$v"'
> bash: v: unbound variable
> % ksh -c 'set -u; unset v; let v+=1; printf "<%s>\\n" "$v"'
> ksh: let: v: parameter not set
> ksh: v: parameter not set
> % zsh -c 'set -u; unset v; let v+=1; printf "<%s>\\n" "$v"'
> zsh:1: v: parameter not set
> zsh:1: v: parameter not set
On the other hand...
% bash -c 'set -u; typeset -i v; printf "<%s>\\n" "$v"'
bash: v: unbound variable
% ksh -c 'set -u; typeset -i v; printf "<%s>\\n" "$v"'
ksh: v: parameter not set
% zsh -c 'set -u; typeset -i v; printf "<%s>\\n" "$v"'
<0>
...and...
% bash -c 'set -u; typeset -i v; v+=1; printf "<%s>\\n" "$v"'
<1>
% ksh -c 'set -u; typeset -i v; v+=1; printf "<%s>\\n" "$v"'
<1>
% zsh -c 'set -u; typeset -i v; v+=1; printf "<%s>\\n" "$v"'
<1>
*shrug*
vq
- set -u not working as expected, Kristof Burek, 2020/08/01
- Re: set -u not working as expected, Lawrence Velázquez, 2020/08/01
- Re: set -u not working as expected,
Lawrence Velázquez <=
- Re: set -u not working as expected, Oğuz, 2020/08/02
- Re: set -u not working as expected, Lawrence Velázquez, 2020/08/02
- Re: set -u not working as expected, Oğuz, 2020/08/02
- Re: set -u not working as expected, Oğuz, 2020/08/02
- Re: set -u not working as expected, Chet Ramey, 2020/08/02
- Re: set -u not working as expected, Chet Ramey, 2020/08/02
Re: set -u not working as expected, Chet Ramey, 2020/08/02
Re: set -u not working as expected, Chet Ramey, 2020/08/02