Muchas veces en nuestros programas necesitamos dividir una cadena en un array para procesarlo, en la mayoria de los lenguajes de programacion es una tarea sumamente sencilla pero si utilizamos bash quizas pueda ser una tarea un poco mas complicada, por esa razón dejo una muestra de como podria hacerse en este lenguaje.
Imaginemos que tenemos la siguiente linea de texto
"Paris,France,Europe"
y queremos una salida tipo
array[0] = Paris array[1] = France array[2] = Europe
Lo que debemos hacer es lo siguiente:
IFS=', ' read -a array <<< "$string"
Para acceder al primer elemento
echo "${array[0]}"
Para iterar dentro de los elementos
for element in "${array[@]}" do echo "$element" done
Para obtener el indice y el valor
for index in "${!array[@]}" do echo "$index ${array[index]}" done
El ultimo ejemplo es util por que los arreglos en bash son esparcidos, en otras palabras puedes borrar un elemento o añadir un elemento y los indices no seran contiguos.
unset "array[1]" array[42]=Earth
Para obtener el numero de elementos del array
echo "${#array[@]}"
Como mencione antes los arreglos pueden ser esparcidos, por lo que no deberias usar la longuitud para obtener el ultimo elemento. Aqui te muestro como deberias hacer para esta tarea (a partir de la version 4.2 o superior)
echo "${array[-1]}"
En cualquier version (a partir de la 2.05b)
echo "$array[@]: -1:1}