Estoy tratando de hacer un script que debe ser ejecutado con crontab, pero estoy teniendo dificultades para declarar un array y obtener la clave y el valor de ese array. (Corriendo MacOS 10.12.6)
Esto es lo que tengo hasta ahora:
#!/bin/bash
declare -A listofnames
listofnames[one]="one test"
listofnames[two]="two test"
for val in "${listofnames[@]}"; do
echo $val
done
Y esto me da un error: declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
y la salida que two test
.
Resultado esperado:
$ ./test.sh
one test
two test
0 votos
Vamos, amigos no voten hacia abajo sin una explicación.
1 votos
MacOS viene con la versión 3 de bash (por razones de licencia), pero las matrices asociativas no se añadieron a bash hasta la versión 4. Si no puedes hacer lo que necesitas con matrices indexadas numéricamente, tu mejor opción sería instalar bash v4 con homebrew y luego cambiar la línea shebang para usarla en lugar de la versión incorporada.
0 votos
¿Qué versión de MacOS utilizas?
1 votos
@GordonDavisson ¡Bien! Parece que tengo instalado bash 5, acabo de cambiar el tinglado y ya funciona todo sin problemas.