Cómo simular una matriz de matrices en Bash

Cómo simular una matriz de matrices en Bash
Bash es de hecho un lenguaje interactivo interpretado, y cuánto espacio para reservar con anticipación no tiene que ser conocido. También es posible preparar una nueva matriz dinámicamente sin declararla o extender una matriz previamente definida para incluir entradas adicionales. Aún así, las matrices multidimensionales no son compatibles con Bash, y no podemos obtener componentes de matriz que también son matrices. Afortunadamente, se pueden simular matrices multidimensionales. Este artículo proporcionará algunas ilustraciones de la simulación de una matriz de matrices en un script bash.

Ejemplo 01: Uso de bucles simples "para"

Tenemos un ejemplo de simular una matriz de matrices utilizando el método simple. Comencemos a demostrar cómo cargar una tabla M x N definida por el usuario con números aleatorios (que no son aleatorios, porque cada columna tendrá un número similar en cada ejecución en la mayoría de sus filas, pero eso no se aplica a la pregunta ), e imprímalo. Cuando trabajamos en una fiesta que tiene, la versión 4 de Bash, el siguiente script ciertamente funcionaría de manera eficiente. No debemos declarar solitario 0; que es más como una solución perfecta a los valores que se aceptan vigorosamente. Hemos declarado una matriz con la palabra clave "-a". Si no definimos la matriz asociativa usando -A, el código puede no funcionar para nosotros. La palabra clave de lectura se usa para leer la entrada del usuario, que son filas y columnas de una tabla. Luego hemos usado dos bucles "para" para la incrementación de filas y columnas de una tabla. En For Loop, hemos estado haciendo una matriz bidimensional. En el siguiente bucle para bucle, se han mostrado todos los valores de una matriz.

Cuando ejecute el archivo bash, le pedirá a un usuario que ingrese filas y columnas como "m" y "n". Después de eso, para bucles generará una tabla bidimensional como se muestra a continuación.

Ejemplo 02: usando hashes

Tomando la misma instancia, podemos emular las matrices usando hashes. Sin embargo, tenemos que tener más cuidado con los ceros de liderar y varias otras cosas. La siguiente explicación es funcionar. Sin embargo, la salida está muy lejos de ser ideal. Hemos estado tomando filas y columnas manualmente. Para el bucle se usa para hacer una matriz. Luego hemos estado usando hashes para emular la matriz bidimensional. Por fin, la matriz se imprimirá a continuación.

Ejecutar el archivo "Entrada.sh ”en el shell bash usando el comando bash. Encontrará una tabla con filas y columnas mencionadas.

Ejemplo 03: Uso de matrices asociativas

Tengamos un ejemplo de simulación que tiene un efecto algo similar utilizando las matrices asociativas utilizadas como una matriz de matrices a continuación. Después de la declaración de la matriz asociativa, hemos definido valores para matrices por separado. Después de eso, hemos logrado imprimir los valores de una manera bidimensional.

Puede ver la salida como una matriz bidimensional mientras ejecuta el archivo. Si ignoramos la línea "declarar -a arr", la declaración de eco puede mostrar (2 3) en lugar de (0 1), ya que (0,0), (1,0) y otros pueden haberse utilizado como matemáticos expresión y calculado a 0 (el valor en el lado derecho de una coma).

Ejemplo 04: Uso de referencias de nombre

En Bash, es un problema frecuente con las matrices de referencia dentro de las matrices que tendrá que construir referencias de nombres de nombre usando Declare -N. Ese nombre después -n sirve como reflex de nombre para el valor asignado (después =). Actualmente, manejamos esta variable solo con el nombre del atributo, la referencia para extender como si fuera una matriz y extender la matriz citada apropiadamente como de antemano. Tengamos un ejemplo de referencias de nombres. Hemos declarado con éxito dos matrices. Después de eso, hemos asignado ambas matrices a otra matriz como miembro. Hemos usado para el bucle para hacer una matriz bidimensional. Hemos hecho otra variable para agregar los valores uno por uno de la matriz "grupo" en ella para comparar. En el fondo, irá a los miembros de las matrices interiores "bar" y "foo" para tomar valores y compararlos mientras imprime el mensaje.

Cuando ejecutamos el archivo "entrada.sh ”, verá la siguiente salida. La variable "LST" tiene valores de matrices internas dentro de la matriz "Grupos".

Ejemplo 05: Uso de la palabra clave de corte

Solo ahora, me he topado. Hubo un enfoque bastante sencillo que funcionó para todos. Para mostrar un mapa principal para el sistema, decidí usar una matriz que contenía un nombre de dispositivo y una ubicación de pantalla. Tenemos que concatenar el título de la unidad y la ubicación correspondiente de una pantalla en una sola cadena, usando solo un delimitador, que supusimos que no ocurrirá en ninguno de nuestros valores (en mi caso, utilicé .). Y utilicé una palabra clave de "cortar" para dividir los valores concretos en sus componentes si es necesario. Sin embargo, puede haber un enfoque más claro y más fácil para hacerlo, y esto es solo para ilustrar que, en cierto sentido, en Bash, podemos construir una matriz multidimensional, aunque no lo ayuda. Después de eso, debe imprimir tanto el nombre del dispositivo como su ubicación por separado después de crear la subcadena.

Ejecutemos la entrada "Entrada.archivo sh ". Verá el dispositivo separado y su ubicación en la solicitud de shell como mientras se ejecutan. La solución funciona usando el comando CUT.

Ejemplo 06

Tomemos un ejemplo un poco más largo para emular una matriz multidimensional. En la función load_alpha (), todos los alfabetos se cargarán en la matriz. Después de eso, la función print_alpha () se declara y se usa para imprimir todos los alfabetos en el orden de la fila como una matriz o formato bidimensional. Por otro lado, hemos estado utilizando la función Rotate () para rotar la matriz. Probemos este ejemplo en el shell bash para ver los resultados.

Mientras ejecutan, hemos encontrado una estructura muy hermosa de matriz multidimensional en la carcasa de la fiesta como se muestra a continuación

Conclusión

Hemos probado con éxito algunos ejemplos para simular matrices de matrices en Bash. espero que funcione!