Saltar al contenido

Bash: valor demasiado grande para la base cuando se usa una fecha como array key

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *