Mi Blog
👉 Cómo utilizar arrays en Bash

Cómo utilizar arrays en Bash

 
(1 Voto)

Manejar los arrays es algo elemental a la hora de programar en cualquier lenguaje. Ayudan a guardar datos de forma eficiente, acceder a ellos y guardar un cierto orden a la hora de programar código.

Seguid leyendo y os enseñaré a manejar arrays en Bash...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUE ES UN ARRAY?

En programación, un array es una estructura de datos que permite almacenar una colección de elementos del mismo tipo bajo un solo nombre. Cada elemento en un array ocupa una posición única y tiene un índice asociado que indica su posición relativa en el array. Los arrays son utilizados para almacenar datos de manera eficiente y acceder a ellos mediante índices.

En muchos lenguajes de programación, los índices comienzan en 0, lo que significa que el primer elemento tiene un índice de 0, el segundo tiene un índice de 1, y así sucesivamente

 

 

Los arrays son extremadamente útiles para manejar agrupaciones de datos

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un equipo con GNU/Linux o Windows y WSL2

 

 

 

 

2.- CREAR UN ARRAY

Para crear un array en Bash es tan sencillo como asignar a una variable (miArray) los elementos ordenados de la forma siguiente:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")

 

 

2.1.- ACCEDER A LOS DATOS DEL ARRAY

Podemos acceder a cada uno de los elementos de un array indicando la posición del mismo. Para ello es tan sencillo como ver el siguiente ejemplo:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")
echo "Elemento0: " ${miArray[0]} "Elemento3: " ${miArray[3]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

Elemento0:  dir1 Elemento3:  dir4

 

 

Si queremos mostrar todos los elementos del array podemos utilizar [*] para acceder a todos ellos:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")
echo ${miArray[*]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

dir1 dir2 dir3 dir4 dir5

 

 

Para contar el número de elementos del array podemos utilizar #miArray[@]:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")
echo ${#miArray[@]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

5

 

 

También se pueden recorrer todos los elementos de un array utilizando los típicos bucles for, while, if .... A continuación, dejo a modo de ejemplo un bucle de tipo for con un array de Bash:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")

for i in ${miArray[@]}
do
echo $i
done

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

dir1
dir2
dir3
dir4
dir5

 

 

2.2.- MODIFICAR LOS DATOS DE UN ARRAY

Si por ejemplo, hemos introducido un dato erróneo o queremos modificar el elemento 4 (dir5555) y queremos corregirlo a "dir5", ejecutaremos el siguiente comando:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5555")
miArray[4]="dir5"

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

dir1 dir2 dir3 dir4 dir5

 

 

2.3.- AÑADIR DATOS DE UN ARRAY

Para añadir un elemento al final de array usaremos el modificador += para añadir un nuevo elemento al final:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")
miArray+=("dir6")
echo ${miArray[*]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

dir1 dir2 dir3 dir4 dir5 dir6

 

 

2.4.- ELIMINAR UN ELEMENTO DE UN ARRAY

Para borrar un elemento de un array en Bash usaremos el comando unset indicando el elemento que queremos borrar:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")
unset miArray[2]
echo ${miArray[*]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente donde dir3 ya no está:

dir1 dir2 dir4 dir5

 

 

Si queremos borrar un array entero usaremos esta pequeña variante:

#/bin/bash
miArray=("dir1" "dir2" "dir3" "dir4" "dir5")
unset miArray

 

 

 

3.- CREAR UN ARRAY ASOCIATIVO

Existen dos formas para crear un array asociativo en Bash. Ambas son muy sencillas, pero una ocupa más líneas de texto y otra menos:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array[cpu]="Intel"
array[memoria]="8GB"
array[disco]="500GB"
array[red]="1Gbps"

 

 

La segunda forma de crear un array asociativo en Bash es la siguiente:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array=( [cpu]="Intel" [memoria]="8GB" [disco]="500GB" [red]="1Gbps" )

 

 

3.1.- ACCEDER A LOS DATOS DEL ARRAY ASOCIATIVO

Podemos acceder a cada uno de los elementos de un array indicando la clave del mismo. Para ello es tan sencillo como ver el siguiente ejemplo:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array[cpu]="Intel"
array[memoria]="8GB"
array[disco]="500GB"
array[red]="1Gbps"

echo "La CPU es: " ${array[cpu]} "y la red es de: " ${array[red]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

La CPU es:  Intel y la red es de:  1Gbps

 

 

Si queremos mostrar todos los valores de un array utilizaremos ${array[@]}:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array[cpu]="Intel"
array[memoria]="8GB"
array[disco]="500GB"
array[red]="1Gbps"

echo "Valores:" ${array[@]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

Valores: Intel 8GB 500GB 1Gbps

 

 

3.2.- MODIFICAR LOS DATOS DE UN ARRAY ASOCIATIVO

Si por ejemplo, hemos introducido un dato erróneo o queremos modificar el elemento CPU cambiarlo de Intel a AMD, ejecutaremos el siguiente comando:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array[cpu]="Intel"
array[memoria]="8GB"
array[disco]="500GB"
array[red]="1Gbps"

array[cpu]="AMD"

echo "La CPU es: " ${array[cpu]} "y la red es de: " ${array[red]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

La CPU es:  AMD y la red es de:  1Gbps

 

 

3.3.- AÑADIR DATOS A UN ARRAY ASOCIATIVO

Para añadir un elemento al final de array usaremos el modificador += para añadir un nuevo elemento al final:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array[cpu]="Intel"
array[memoria]="8GB"
array[disco]="500GB"
array[red]="1Gbps"

array[wifi]+="YES"
echo "Valores:" ${array[@]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

Valores: Intel 8GB 500GB 1Gbps YES

 

 

 

3.4.- ELIMINAR UN ELEMENTO DE UN ARRAY ASOCIATIVO

Para borrar un elemento de un array en Bash usaremos el comando unset indicando el elemento que queremos borrar:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array[cpu]="Intel"
array[memoria]="8GB"
array[disco]="500GB"
array[red]="1Gbps"

unset array[disco]
echo "Valores:" ${array[@]}

 

 

Si ejecutamos el script anterior, obtendremos la salida siguiente:

Valores: Intel 8GB 1Gbps

 

 

Si queremos borrar un array entero usaremos esta pequeña variante:

#/bin/bash

declare -A array

#Array asociativo de pareja (clave, valor).
array[cpu]="Intel"
array[memoria]="8GB"
array[disco]="500GB"
array[red]="1Gbps"

unset array[disco]
echo "Valores:" ${array[@]}

 

 

4.- ARRAYS MULTIDIMENSIONALES

Por defecto, Bash no admite arrays multidimensionales, y aunque hay forma de hacer pequeños "trucos", no es el objetivo de este post, y por ello no detallaré cómo funcionan.

 

 

ENJOY!