Matriz multidimensional en Bash

MD Aminul Islam 20 junio 2023
  1. Forma básica de declarar una matriz multidimensional en Bash
  2. Declarar una matriz bidimensional mediante una matriz asociativa en Bash
Matriz multidimensional en Bash

Una matriz multidimensional es un elemento muy importante para cualquier programa. Se utiliza principalmente para crear una vista de tabla de los datos y para muchos otros fines.

Este artículo muestra cómo crear una matriz bidimensional. Además, discutiremos el tema con los ejemplos y explicaciones necesarios.

Discutiremos dos métodos diferentes aquí.

Forma básica de declarar una matriz multidimensional en Bash

Este es el método más básico para crear una matriz multidimensional. En nuestro ejemplo a continuación, crearemos una matriz bidimensional muy básica.

A continuación se muestra el código de nuestro ejemplo.

ArrayOfArray_1=("Alen" "24")
ArrayOfArray_2=("Walker" "31")
MainArray=(
  ArrayOfArray_1[@]
  ArrayOfArray_2[@]
)

ArrayLength=${#MainArray[@]}
for ((i=0; i<$ArrayLength; i++))
do
  name=${!MainArray[i]:0:1}
  age=${!MainArray[i]:1:1}
  echo "Name : ${name}"
  echo "Age : ${age}"
done

El código anterior muestra que declaramos dos matrices diferentes llamadas ArrayOfArray_1 y ArrayOfArray_2. Después de eso, declaramos nuestra matriz principal, cuyo elemento son estas dos matrices que declaramos recientemente.

Luego calculamos la longitud de la matriz para un bucle. Dentro del bucle, extraemos los datos de estos dos subconjuntos indexando el conjunto principal.

Por último, nos hacemos eco del resultado final. Después de ejecutar el script, obtendrá un resultado como el que se muestra a continuación.

Name : Alen
Age : 24
Name : Walker
Age : 31

Declarar una matriz bidimensional mediante una matriz asociativa en Bash

Este método es un poco complejo. Este método discutirá una matriz especial de secuencias de comandos Bash denominada matriz asociativa.

Una matriz asociativa es una matriz especial que puede almacenar un valor de cadena como clave o índice. Es similar a los otros lenguajes de programación.

La sintaxis general para declarar una matriz asociativa es declare -A ArrayName.

Nuestro ejemplo a continuación creará una matriz 2D que contiene cinco filas y seis columnas. A continuación se muestra el código de nuestro ejemplo.

declare -A Array2D
RowNum=5
ColumnNum=6

for ((i=1;i<=RowNum;i++)) do
    for ((j=1;j<=ColumnNum;j++)) do
        Array2D[$i,$j]=$RANDOM
    done
done

f1="%$((${#RowNum}+1))s"
f2=" %9s"

printf "$f1" ''
for ((i=1;i<=RowNum;i++)) do
    printf "$f2" $i
done
echo

for ((j=1;j<=ColumnNum;j++)) do
    printf "$f1" $j
    for ((i=1;i<=RowNum;i++)) do
        printf "$f2" ${Array2D[$i,$j]}
    done
    echo
done

En el ejemplo anterior, declaramos una matriz asociativa llamada Array2D.

Después de eso, creamos dos variables y les asignamos un valor entero. Este valor entero especifica el número de filas y columnas.

Luego creamos un ciclo anidado que llenó la matriz con el número aleatorio.

Ahora hemos terminado de declarar y organizar la matriz. Es hora de ver cómo se ve nuestra matriz 2D.

Lo hacemos usando algunos bucles, como se ve en el código. Cuando ejecute el script anterior, verá un resultado como el siguiente.

           1         2         3         4         5
 1     16700      5241      2599     24330      1662
 2     23264     19557     10425     13413     25606
 3     17987      4199     13598     23897     26734
 4     24420     27830     24855      8165     13531
 5     15495     18790     13347     12947     11826
 6     23458     22838       137     32454     32441

Todos los códigos de este artículo están escritos en Bash. Solo funcionará en el entorno Linux Shell.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - Bash Array