- Definir una matriz por índice
- Definir una matriz con múltiples valores
- Definir una matriz asociativa
- Cuente los valores de la matriz
- Leer los valores de la matriz por bucle
- Lea los valores particulares de la matriz
- Insertar los valores de la matriz
- Leer el contenido de un archivo en la matriz
- Combine los valores de la matriz
- Modificar los valores de la matriz
- Eliminar los valores de la matriz
- Buscar y reemplazar los valores de la matriz
- Utilice una matriz como argumento de función
- Devolver la matriz de la función
- Hacer que la matriz esté vacía
Definir una matriz por índice
El método para declarar una matriz mencionando los índices numéricos secuenciales o no secuenciales se muestra en el siguiente script. Este tipo de matriz se llama matriz numérica. Aquí, la matriz “$libros” se crea definiendo tres índices secuenciales y la matriz “$productos” se crea definiendo cuatro índices no secuenciales. Todos los valores de ambas matrices se imprimen usando la función 'printf'.
#!/bin/bash
#Definir índice de matriz en orden secuencial
libros [ 0 ] = 'Aprendiendo el Shell bash'
libros [ 1 ] = 'Operaciones de ciberseguridad con bash'
libros [ 2 ] = 'Consejos profesionales para la línea de comandos de Bash'
eco 'Todos los valores de la primera matriz:'
imprimirf '%s\n' ' ${libros[@]} '
#Definir el índice de la matriz en orden no secuencial
productos [ 10 ] = 'Bolígrafo'
productos [ 5 ] = 'Lápiz'
productos [ 9 ] = 'Rulares'
productos [ 4 ] = 'Papel tamaño A4'
eco
eco 'Todos los valores de la segunda matriz:'
imprimirf '%s\n' ' ${productos[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. Los valores de ambas matrices se imprimen en la salida. El orden de los índices se mantiene en el momento de la impresión para la matriz de índices no secuenciales:
Definir una matriz con múltiples valores
Se puede declarar una matriz numérica con múltiples valores usando el comando 'declarar' con la opción -a o sin usar el comando 'declarar'. En el siguiente script, la primera matriz se declara usando el comando 'declarar' y la segunda matriz se crea sin usar el comando 'declarar'.
#!/bin/bash
#Declarar una matriz numérica con la palabra clave 'declarar'
declarar -a nombres = ( 'Miguel' 'David' 'Alejandro' 'Tomás' 'Roberto' 'Ricardo' )
#Imprimir los valores de la matriz
eco 'Todos los valores de la primera matriz:'
imprimirf '%s\n' ' ${nombres[@]} '
#Declarar una matriz numérica sin la palabra clave 'declarar'
libros = ( 'Tutoriales de secuencias de comandos de Shell' '¡Bish Bash Bosh!' 'Aprende Bash rápidamente' )
#Agregar nueva línea
eco
#Imprimir los valores de la matriz
eco 'Todos los valores de la segunda matriz:'
imprimirf '%s\n' ' ${libros[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. Los valores de ambas matrices se imprimen aquí:
Definir una matriz asociativa
La matriz que contiene el valor de la cadena como índice se llama matriz asociativa. La opción -A se usa con el comando 'declarar' en Bash para crear una matriz Bash asociativa. En el siguiente script, la primera matriz asociativa se declara mencionando los índices por separado y la segunda matriz se declara mencionando todos los pares clave-valor en el momento de la declaración de la matriz.
#!/bin/bash#Declarar una variable de matriz asociativa sin valor
declarar -A empleado
#Asignar valor por separado definiendo el índice
empleado [ 'identificación' ] = '78564'
empleado [ 'nombre' ] = 'Actores disponibles'
empleado [ 'correo' ] = 'CEO'
empleado [ 'salario' ] = 300000
#Imprimir dos valores del array
eco 'ID de empleado: ${empleado[id]} '
eco 'Nombre de empleado: ${empleado[nombre]} '
#Declarar una matriz asociativa con valores
declarar -A curso = ( [ código ] = 'CSE-206' [ nombre ] = 'Programación orientada a objetos' [ hora de crédito ] = 2.0 )
#Agregar nueva línea
eco
#Imprimir dos valores de matriz de la segunda matriz
eco 'Nombre del curso: ${curso[nombre]} '
eco 'Hora de crédito: ${curso[hora_crédito]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. Los valores particulares de la matriz asociativa se imprimen aquí mencionando la clave o el valor del índice:
Cuente los valores de la matriz
El método para contar los elementos totales de la matriz numérica y la matriz asociativa se muestra en el siguiente script:
#!/bin/bash#Declarar una matriz numérica
declarar -a nombres = ( 'Miguel' 'David' 'Alejandro' 'Tomás' 'Roberto' 'Ricardo' ) ;
eco 'La longitud de la matriz numérica es ${#nombres[@]} '
#Declarar una matriz asociativa
declarar -A curso = ( [ código ] = 'CSE-206' [ nombre ] = 'Programación orientada a objetos' [ hora de crédito ] = 2.0 )
eco 'La longitud de la matriz asociativa es ${#curso[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. La longitud de la matriz numérica y asociativa se imprime aquí:
Leer los valores de la matriz por bucle
El método para leer todos los valores de una matriz numérica y una matriz asociativa usando el bucle 'for' se muestra en el siguiente script:
#!/bin/bash#Declarar una matriz numérica
declarar -a libros = ( 'Tutoriales de secuencias de comandos de Shell' '¡Bish Bash Bosh!' 'Aprende Bash rápidamente' )
#Imprimir los valores de la matriz numérica
eco 'Los valores de la matriz numérica son:'
para en en ' ${libros[@]} '
hacer
eco ' $en '
hecho
eco
#Declarar una matriz asociativa con valores
declarar -A clientela = (
[ identificación ] = 'H-5623'
[ nombre ] = 'Señor. Ahnaf'
[ DIRECCIÓN ] = '6/A, Dhanmondi, Dhaka.'
[ teléfono ] = '+8801975642312' )
#Imprimir los valores de la matriz asociativa
eco 'Los valores de matriz asociativa son:'
para k en ' ${!clientes[@]} '
hacer
eco ' $k => ${clientes[$k]} '
hecho
Producción :
El siguiente resultado aparece después de ejecutar el script. Aquí, los valores de la matriz numérica y los pares clave-valor de la matriz asociativa se imprimen en la salida:
Lea el rango particular de valores de la matriz
Los valores de la matriz del rango particular de los índices se muestran en el siguiente script. En el script, se define una matriz numérica de cuatro elementos. Posteriormente se imprimen dos valores de matriz del segundo índice de la matriz.
#!/bin/bash#Declarar una matriz numérica
declarar -a pasteles = ( 'Pastel de chocolate' 'Pastel de vainilla' 'Pastel de terciopelo rojo' 'pastel de fresa' )
#Imprimir los valores de la matriz particular
eco 'El segundo y tercer elemento de los valores de la matriz son:'
imprimirf '%s\n' ' ${pasteles[@]:1:2} '
Producción :
El siguiente resultado aparece después de ejecutar el script. El segundo y tercer valor de la matriz son 'Vanilla Cake' y 'Red Velvet Cake', que se imprimen en el resultado:
Inserte los valores de la matriz
El método para agregar múltiples valores al final de la matriz se muestra en el siguiente script. La matriz principal, que es '$books', contiene tres elementos y se agregan dos elementos al final de la matriz '$books'.
#!/bin/bash#Declarar una matriz numérica
declarar -a libros = ( 'Tutoriales de secuencias de comandos de Shell' '¡Bish Bash Bosh!' 'Aprende Bash rápidamente' )
#Imprimir los valores de la matriz antes de insertarlos
eco 'Valores de matriz:'
imprimirf '%s\n' ' ${libros[@]} '
eco
libros = ( ' ${libros[@]} ' 'Biblia de secuencias de comandos de Shell y línea de comandos de Linux' 'Guía avanzada de secuencias de comandos Bash de Mendel Cooper' )
#Imprimir los valores de la matriz después de insertarlos
eco 'Valores de matriz después de insertar dos valores:'
imprimirf '%s\n' ' ${libros[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. Los valores de la matriz antes y después de insertar nuevos valores se imprimen en la salida:
Leer el contenido del archivo en la matriz
Cree un archivo de texto llamado “fruits.txt” con el siguiente contenido para probar el script de este ejemplo:
frutas.txt
mangoYaca
Piña
Naranja
Banana
En el siguiente script, el contenido de un archivo se almacena en una matriz denominada '$data'. Aquí, cada línea del archivo se almacena como cada elemento de la matriz. A continuación, se imprimen los valores de la matriz.
#!/bin/bash#Leer el nombre del archivo del usuario
leer -pag 'Ingrese el nombre del archivo:' Nombre del archivo
si [ -F $nombre de archivo ]
entonces
#Leer el contenido del archivo en una matriz'
datos = ( ` gato ' $nombre de archivo ' ` )
eco 'El contenido del archivo se proporciona a continuación:'
#Leer el archivo línea por línea
para línea en ' ${datos[@]} '
hacer
eco línea $
hecho
ser
Producción :
El siguiente resultado aparece después de ejecutar el script. La salida que muestra el comando 'cat' y la salida del script son similares porque el comando 'cat' y el script acceden al mismo archivo:
Combine los valores de la matriz
Se crea una nueva matriz combinando los valores de varias matrices. En el siguiente script, se definen dos matrices numéricas de cadenas. Luego, se crea una nueva matriz combinando los valores de estas matrices.
#!/bin/bash#Declarar la primera matriz
declarar -a nombreLista1 = ( 'Miguel' 'David' 'Alejandro' 'Tomás' )
eco 'Los primeros valores de la matriz son:'
imprimirf '%s, ' ${nombreList1[@]}
eco
#Declarar la segunda matriz
declarar -a nombreLista2 = ( 'Roberto' 'Ricardo' )
eco 'Los valores de la segunda matriz son:'
imprimirf '%s, ' ${nombreList2[@]}
eco
#Crear una nueva matriz combinando dos matrices
matriz_combinada = ( ' ${nombreList1[@]} ' ' ${nombreList2[@]} ' )
eco 'Los valores de la matriz combinados son:'
imprimirf '%s, ' ${combined_array[@]}
eco
Producción :
El siguiente resultado aparece después de ejecutar el script. Aquí, los valores de tres matrices se imprimen en la salida. La tercera matriz contiene todos los valores de la primera y segunda matriz:
Modificar los valores de la matriz
El método para actualizar uno o más valores de matriz mencionando el índice se muestra en el siguiente script:
#!/bin/bash#Declarar la primera matriz
declarar -a lista de nombres = ( 'Miguel' 'David' 'Alejandro' 'Tomás' )
eco 'Valores de matriz:'
imprimirf '%s, ' ${nombreLista[@]}
eco
#Actualizar el segundo valor de la matriz
lista de nombres [ 1 ] = 'Roberto'
eco 'Valores de matriz después de la actualización:'
imprimirf '%s, ' ${nombreLista[@]}
eco
Producción :
El siguiente resultado aparece después de ejecutar el script. Los valores de la matriz principal y las matrices actualizadas se imprimen en la salida:
Eliminar los valores de la matriz
El comando 'desarmar' se utiliza para eliminar el elemento particular o todos los elementos de la matriz. En el siguiente script, se elimina el segundo elemento de la matriz.
#!/bin/bash#Declarar una matriz numérica
declarar -a libros = ( 'Tutoriales de secuencias de comandos de Shell' '¡Bish Bash Bosh!' 'Aprende Bash rápidamente' )
#Imprimir los valores de la matriz antes de eliminarlos.
eco 'Valores de matriz:'
imprimirf '%s\n' ' ${libros[@]} '
eco
#Eliminar el segundo elemento
desarmado libros [ 1 ]
#Imprimir los valores de la matriz después de eliminarlos
eco 'Valores de matriz después de eliminar el segundo valor:'
imprimirf '%s\n' ' ${libros[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. Los valores de la matriz principal y los valores de la matriz después de eliminar un valor se imprimen en la salida:
Buscar y reemplazar los valores de la matriz
En el siguiente script, el valor particular de la matriz se reemplaza por otro valor si el valor de búsqueda definido en el patrón coincide con cualquier valor de la matriz “$names”.
#!/bin/bash#Declarar la primera matriz
declarar -a nombres = ( 'Miguel' 'David' 'Alejandro' 'Tomás' )
#Imprimir los valores de la matriz original
eco 'Valores de matriz originales:'
imprimirf '%s\n' ' ${nombres[@]} '
#Generar cadena después de reemplazar los valores de la matriz
matriz_actualizada = ${nombres[@]/Alejandro/Ricardo}
#Imprimir los valores de la matriz después de reemplazar
eco 'Valores de matriz después de reemplazar:'
imprimirf '%s\n' ' ${matriz_actualizada[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. Los valores de la matriz principal y los valores de la matriz después de reemplazar un valor se imprimen en la salida:
Utilice una matriz como argumento de función
En el siguiente script, se pasa una variable de matriz como argumento de la función y los valores de esa matriz se imprimen más adelante.
#!/bin/bash#Declarar una serie de números
declarar -a números = ( 10 6 45 13 8 )
#Definir una función que tomará un valor de argumento
función ( )
{
#Lea el primer argumento
números = $1
#Imprimir los valores de la matriz
eco 'Valores de matriz:'
imprimirf '%d\n' ' ${números[@]} '
}
#Llamar a la función con el array como argumento
función ' ${números[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script:
Devolver una matriz de la función
En el siguiente script, la función se llama con cuatro argumentos numéricos. Se crea una matriz con los valores de los argumentos y esa matriz se devuelve desde la función a la persona que llama.
#!/bin/bash#Definir una función que lea cuatro valores de argumentos
función ( )
{
#Leer los valores de los argumentos
números = ( $1 $2 $3 $4 )
#Devolver la matriz
eco ' ${números[@]} '
}
#Llamar a la función con tres argumentos
valor_retorno =$ ( función 78 45 90 23 )
#Almacenar el valor de retorno en una matriz
leer -a en uno <<< $retorno_val
#Imprimir los valores del array devuelto
eco 'Los valores de la matriz son:'
para en en ' ${núm[@]} '
hacer
eco ' $en '
hecho
Producción :
El siguiente resultado aparece después de ejecutar el script:
Hacer que la matriz esté vacía
El siguiente script muestra el método para vaciar una matriz usando el comando 'desarmar'. El número total de valores de la matriz se imprime antes y después de vaciar la matriz.
#!/bin/bash#Declarar una serie de números
declarar -a números = ( 10 6 45 13 80 )
eco 'Números de valores de matriz: ${#números[@]} '
#Hacer la matriz vacía
desarmado números
eco 'Número de valores de la matriz después de dejar la matriz vacía: ${#números[@]} '
Producción :
El siguiente resultado aparece después de ejecutar el script. El número de elementos de la matriz pasó a ser 0 después de vaciar la matriz:
Conclusión
En este tutorial se muestran diferentes métodos para declarar, acceder, modificar y eliminar las variables de matriz en el script Bash utilizando 15 ejemplos simples. Esperamos que este tutorial ayude a los usuarios de Bash a conocer en detalle los usos de la matriz Bash.