Bash Tutorial 6: Arrays
Tabla de contenido:
- Bash Arrays
- Crear matrices de Bash
- Crear matrices indexadas numéricamente
- Crear matrices asociativas
- Operaciones de matriz
- Elementos de referencia
- Longitud de la matriz
- Recorrer la matriz
- Agregar un nuevo elemento
- Eliminar un elemento
- Conclusión
Las matrices son una de las estructuras de datos fundamentales más utilizadas. Puede pensar que una matriz es una variable que puede almacenar múltiples variables dentro de ella., cubriremos las matrices de Bash y explicaremos cómo usarlas en sus scripts de Bash.
Bash Arrays
Bash admite tipos de matrices unidimensionales indexadas numéricamente y asociativas. Las matrices numéricas se referencian usando enteros, y las asociativas se referencian usando cadenas.
Se puede acceder a las matrices indexadas numéricamente desde el final utilizando índices negativos, el índice de
-1
referencia al último elemento. Los índices no tienen que ser contiguos.
A diferencia de la mayoría de los lenguajes de programación, los elementos de la matriz Bash no tienen que ser del mismo tipo de datos. Puede crear una matriz que contenga cadenas y números.
Bash no admite matrices multidimensionales, y no puede tener elementos de matriz que también sean matrices.
No hay límite en el número máximo de elementos que se pueden almacenar en una matriz.
Crear matrices de Bash
Las matrices en Bash se pueden inicializar de diferentes maneras.
Crear matrices indexadas numéricamente
Las variables Bash no están tipificadas, cualquier variable puede usarse como una matriz indexada sin declararla.
Para declarar explícitamente una matriz, use declare builtin:
declare -a array_name
Una forma de crear una matriz indexada es mediante el siguiente formulario:
array_name=value_1 array_name=value_2 array_name=value_n
Donde
index_*
es un entero positivo.
Otra forma de crear una matriz numérica es especificar la lista de los elementos entre paréntesis, separados por un espacio vacío:
array_name=(element_1 element_2 element_N)
Cuando la matriz se crea utilizando el formulario anterior, la indexación comienza en cero, es decir, el primer elemento tiene un índice de
0
.
Crear matrices asociativas
A diferencia de la indexación numérica, las matrices asociativas deben declararse antes de que puedan usarse.
Para declarar una matriz asociativa, use la opción
declare
integrada con la opción
-A
(mayúscula):
declare -A array_name
Se pueden crear matrices asociativas utilizando el siguiente formulario:
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
Donde
index_*
puede ser cualquier cadena.
También puede crear una matriz asociativa utilizando el siguiente formulario:
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
Operaciones de matriz
La sintaxis de las matrices de basuras puede parecer un poco extraña al principio, pero tendrá más sentido una vez que lea este artículo.
Elementos de referencia
Para hacer referencia a un solo elemento, debe conocer el índice del elemento.
Se puede hacer referencia a cualquier elemento utilizando la siguiente sintaxis:
${array_name}
La sintaxis para acceder a un elemento de matriz es similar a la sintaxis de la mayoría de los lenguajes de programación. Las llaves
${}
son necesarias para evitar los operadores de expansión de nombre de archivo de shell.
Imprimamos el elemento con índice de
1
:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}
Helium
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium
La única diferencia entre
@
y
*
es cuando el formulario
${my_array}
está rodeado de comillas dobles. En este caso,
*
expande a una sola palabra donde los elementos de la matriz se separan con espacio.
@
expande cada elemento de la matriz a una palabra separada. Esto es especialmente importante cuando se utiliza el formulario para analizar a través de elementos de matriz.
Para imprimir las teclas de la matriz, agregue el
!
operador antes del nombre de la matriz:
${!array_name}
Aquí hay un ejemplo:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
Longitud de la matriz
Para obtener la longitud de una matriz, use el siguiente formulario:
${#array_name}
La sintaxis es la misma que cuando se hace referencia a todos los elementos con la adición del carácter
#
antes del nombre de la matriz.
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
Recorrer la matriz
La forma más común de iterar sobre cada elemento de una matriz es mediante el ciclo for:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
El código anterior iterará sobre la matriz e imprimirá cada elemento en una nueva línea:
Hydrogen Helium Lithium Beryllium
Aquí hay un ejemplo de cómo imprimir todas las claves y valores:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Otra forma de recorrer una matriz es obtener la longitud de la matriz y usar el bucle de
C style
:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Agregar un nuevo elemento
Para agregar un nuevo elemento a una matriz bash y especificar su índice, utilice el siguiente formulario:
my_array="New Element"
Aquí hay un ejemplo:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Aluminum
Otra forma de agregar un nuevo elemento a una matriz sin especificar el índice es mediante el uso del operador
+=
. Puede agregar uno o varios elementos:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
Eliminar un elemento
Para eliminar un solo elemento, deberá conocer el índice del elemento. Un elemento se puede eliminar con el comando
unset
:
unset my_array
Veamos un ejemplo:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
Conclusión
Explicamos cómo crear matrices indexadas y asociativas numéricamente. También hemos mostrado cómo iterar a través de las matrices, calcular la longitud de la matriz y agregar y eliminar elementos.
terminal de bashMicrosoft Research Asia recibe a Gates en 10 años Bash
Microsoft Research Asia creció de una docena de personas en 1998 a más de 350 una década después.
Cómo ejecutar Bash en Ubuntu en Windows 10
Habilitar el subsistema Windows para Linux le permitirá ejecutar Bash en Ubuntu en Windows 10, scripts Bash , Herramientas de línea de comandos de Linux, herramientas para Linux.
Bash para bucle
Hay 3 construcciones básicas de bucle en las secuencias de comandos Bash, para bucle, mientras que bucle y hasta bucle. En este tutorial, cubriremos los conceptos básicos de los bucles for en Bash, así como las declaraciones break y continue para alterar el flujo de un bucle.







