Cómo manipular y controlar datos con Bash Array

Como Manipular Y Controlar Datos Con Bash Array



Una variable de matriz se utiliza en cualquier lenguaje de programación para almacenar múltiples valores usando un índice. El índice de la matriz puede ser un número o una cadena. La matriz que contiene el índice numérico se llama 'matriz numérica' ​​y la matriz que contiene el valor de cadena como índice se llama 'matriz asociativa'. En Bash se pueden crear matrices tanto numéricas como asociativas. Los métodos para manipular y controlar los datos de la matriz Bash se muestran en detalle utilizando 15 ejemplos en este tutorial.

Lista de contenido:

  1. Definir una matriz por índice
  2. Definir una matriz con múltiples valores
  3. Definir una matriz asociativa
  4. Cuente los valores de la matriz
  5. Leer los valores de la matriz por bucle
  6. Lea los valores particulares de la matriz
  7. Insertar los valores de la matriz
  8. Leer el contenido de un archivo en la matriz
  9. Combine los valores de la matriz
  10. Modificar los valores de la matriz
  11. Eliminar los valores de la matriz
  12. Buscar y reemplazar los valores de la matriz
  13. Utilice una matriz como argumento de función
  14. Devolver la matriz de la función
  15. 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:



  p1





Ve arriba

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í:

  p2

Ve arriba

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:

  p3

Ve arriba

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í:

  p4

Ve arriba

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:

  p5

Ve arriba

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:

  p6

Ve arriba

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:

  p7

Ve arriba

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

mango

Yaca

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:

  p8

Ve arriba

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:

  p9

 

Ve arriba

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:

  p10

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:

  p11

Ve arriba

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:

  p12

Ve arriba

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:

  p13

Ve arriba

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:

Ve arriba

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:

  p15

Ve arriba

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.