[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
${y@a} on an empty array y fails with 'y: unbound variable' if run with
From: |
Mark March |
Subject: |
${y@a} on an empty array y fails with 'y: unbound variable' if run with set -u |
Date: |
Tue, 26 Oct 2021 00:24:30 +0000 (UTC) |
If -u is on and you declare a simple or associative array 'y' and set it empty,
then ${y@a} will fail with 'unbound variable'.
I was able to repro this under 5.1.0(1)-release and 5.1.8. 5.0.17(1)-release
does not seem to be affected.
The code to reproduce (output lines begin with #>):
echo $BASH_VERSION
#> 5.1.0(1)-release
set -u
declare -a y=()
echo ${y@a}
#> bash: y: unbound variable
declare -p y
#> declare -a y=()
echo ${y[@]}
#>
set +u
echo ${y@a}
#> a
As you can see, turning off -u makes ${y@a} work correctly.
I wonder if this is a side-effect of the fix that you described in item (n) of
the most recent change log:
n. Fixed a bug that caused ${foo@a} to treat foo as an unset variable if it was
an array without a value for subscript 0/"0" but had other set elements
Thanks,
-Mark
- ${y@a} on an empty array y fails with 'y: unbound variable' if run with set -u,
Mark March <=