bug-bash
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]