[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Incorrect documentation for compat43
From: |
Emanuele Torre |
Subject: |
Incorrect documentation for compat43 |
Date: |
Tue, 2 Jul 2024 21:04:25 +0200 |
User-agent: |
Mutt/2.2.13 (00d56288) (2024-03-09) |
>From the bash man page:
compat43
• the shell does not print a warning message if an attempt
is made to use a quoted compound assignment as an argument
to declare (e.g., declare -a foo='(1 2)'). Later versions
warn that this usage is deprecated
But declare -a foo='(1 2)' does not print a warning in bash 5.2.26, so
that paragraph is at least irrelevant to newer versions of bash that
don't output a warning:
$ declare -a foo='(1 2)'
$ declare -p foo BASH_VERSION
declare -a foo=([0]="1" [1]="2")
declare -- BASH_VERSION="5.2.26(1)-release"
I also tried the same command in 4.4.23, 5.0.18, and 5.1.16, and they
all didn't output a warning either, so I wonder if that warning actually
ever existed in a release.
I also wonder whether declare -a foo='(1 2)' is actually deprecated
since bash 5.1's ${var[@]@K} expansions to copy associative arrays are
often used in:
declare -A "foo=(${bar[@]@K})"
I guess it is also possible to use @K expansions with eval like so, if
that form is actually to be considered deprecated:
declare -A foo=(); eval "bar=${foo[@]@K}"
# or
eval declare -A "foo=(${bar[@]@K})"
o/
emanuele6
- Incorrect documentation for compat43,
Emanuele Torre <=