Con la verificación de variables independientes habilitada (set -u), bash no puede inicializar y acceder a la matriz asociativa:

Durante la inicialización

set -u
declare -a qwe=()
qwe[asd]=val # bash: asd: unbound variable

Durante el acceso:

declare -a qwe=()
qwe[asd]=val
set -u
echo ${qwe[asd]} # bash: asd: unbound variable

Versión Bash: GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)

¿Me estoy perdiendo algo o es algún tipo de error?

0
michael nesterenko 14 mar. 2021 a las 22:11

1 respuesta

La mejor respuesta

qwe es una matriz, con indexación de enteros. Cuando escribe qwe[asd], Bash sabe que asd tiene que ser un número entero, por lo que intenta obtener el valor de una variable $asd (maneja el contenido de los corchetes como un " contexto aritmético "); si no está configurado, el valor predeterminado será 0, pero debido a set -u, obtendrá un error en su lugar.

¿Quiso decir declare -A para una matriz asociativa?

1
Benjamin W. 14 mar. 2021 a las 19:13