Este grupo de redactores ha pasado horas investigando la respuesta a tu búsqueda, te compartimos la respuestas de modo que esperamos que te resulte de mucha ayuda.
Solución:
Eso es porque dailyData
se crea automáticamente como indexado array en lugar de una asociación array. De man bash
:
un índice array se crea automáticamente si se asigna alguna variable usando la sintaxis
name[subscript]=value
. El subíndice se trata como una expresión aritmética que debe dar como resultado un número.
El problema desaparece si declara explícitamente dailyData
como asociativo array:
$ declare -A dailyData[2021-02-08]="$todayData"
$ declare -p dailyData
declare -A dailyData=([2021-02-08]="" )
No puedo reproducir el problema con matrices asociativas:
#! /bin/bash
declare -A dailyData
today=2021-02-08
todayData=whatever
dailyData["$today"]="$todayData"
Pero, si uso matrices normales, es decir declare -a
(¡cuidado con el caso!) o ninguna declaración, entonces obtengo el error que mencionas. Eso es porque el array index se interpreta como una expresión aritmética, por lo que para 2021-02-07, solo se calculó como 2021 – 2 – 7 = 2012, pero para 2021-02-08, el último número de la resta no es válido en octal.
Comentarios y puntuaciones
Eres capaz de añadir valor a nuestra información colaborando tu experiencia en los informes.