LinuxParty
¿Cómo uso bash for loop para iterar valores de matriz de pensamiento en sistemas operativos UNIX / Linux? ¿Cómo puedo recorrer una matriz de cadenas en Bash?
El Bash proporciona variables de matriz unidimensionales. Cualquier variable puede usarse como matriz; el comando interno declare declarará explícitamente una matriz. No existe un límite máximo en el tamaño de una matriz, ni ningún requisito de que los miembros estén indexados o asignados de forma contigua. Las matrices se indexan mediante números enteros y se basan en cero. Esta página explica cómo declarar una matriz bash y luego usar Bash for Loop para iterar a través de los valores de la matriz.
Detalles del tutorial | |
---|---|
Nivel de dificultad | Fácil |
Privilegios de root | No |
Requisitos | Bash en Linux / Unix |
Est. tiempo de leer | 2 minutos |
Para declarar una matriz en bash
Declaremos una matriz llamada matriz y asignemos tres valores cuando use bash:
matriz=( uno dos tres )
Por supuesto, también puede usar el comando declare de la siguiente manera:
# Matrices indexadas (lista numerada comenzando desde cero) # declare -a ARRAY_NAME_HERE=(value1 value2 .... valueN) declare -a nameservers=(google cloudflare isp1) nameservers[3]=isp2
A continuación, se muestran algunos ejemplos más:
# ------------------------- ficheros=( "/etc/passwd" "/etc/group" "/etc/hosts" ) limites=( 10 20 26 39 48) # -------------------------
Una nota sobre la matriz asociativa de bash (par clave / valor)
La sintaxis es la siguiente:
# ------------------------- # matrices asociativas # declare -A ARRAY_NAME_HERE declare -A frutas frutas[sur]="Plátano" frutas[norte]="Naranja" frutas[oeste]="Fruta de la pasión" frutas[este]="Cereza" # -------------------------Imprimir una matriz en bash
Para imprimir una matriz, use el comando printf o el comando echo :
# ------------------------- printf "%s\n" "${matriz[@]}" printf "%s\n" "${ficheros[@]}" printf "%s\n" "${limites[@]}" printf "%s\n" "${frutas[@]}"
printf "\n" # # También puede acceder a elementos usando índices o valores clave en bash #
printf "\n"
printf "Archivo de grupo en Linux o Unix:%s\n " "${ficheros[1]}" printf "Fruta popular en el Super:%s\n " " ${frutas[sur]}"
printf "\n" # -------------------------
Ejemplo de matriz de bash for loop para iterar a través de valores de matriz
Utilice bash para la sintaxis de bucle de la siguiente manera:
for i in "${arrayName[@]}" do : # do whatever on "$i" here done
La $ivariable contendrá cada elemento en una matriz. No omita las comillas dobles alrededor del ${arrayName[@]}.
Recorre un conjunto de cadenas en Bash
A continuación, se muestra un ejemplo de secuencia de comandos de trabajo:
# ------------------------- #! /bin/bash # declara un array llamado array y define 3 valores array = ( uno dos tres ) for i in "${array[@]}" do echo "$i" done # -------------------------
Ejecútelo de la siguiente manera:
chmod +x array_demo.sh
./array_demo.sh
Configurar un contador e iterar a través de los valores de la matriz bash
La siguiente es otra sintaxis o método que se puede utilizar. Entonces, declaremos una matriz llamada mahabharata de la siguiente manera:
# ------------------------- declare -a nombrearray # -------------------------
Luego agregue valores o personajes del poema épico:
# ------------------------- nombrearray[0]="UnaCosa" nombrearray[1]="DosCosas" nombrearray[2]="TresCosas" nombrearray[3]="CuatroCosas" nombrearray[4]="CincoCosas" nombrearray[5]="SeisCosas" # -------------------------
A continuación, obtenga o encuentre la longitud de la matriz de shell de bash (número de elementos) utilizando la siguiente sintaxis:
# ------------------------- length=${#nombrearray[@]} echo "Bash array '\${nombrearray}' has total ${length} element(s) (length)" # -------------------------
Finalmente, use la sintaxis bash de tres expresiones (estilo C) para bucles :
# ------------------------- for (( j=0; j<${length}; j++ )); do printf "Current index %d with value %s\n" $j "${nombrearray[$j]}" done # -------------------------
Así es como se ve:
# ------------------------- #!/usr/bin/env bash # declare an array variable declare -a nombrearray=("Krishna" "Yudhishthira" "Bheema" "Arjuna" "Draupadi" "Duryodhana") # get length of an array length=${#nombrearray[@]} # use C style for loop syntax to read all values and indexes for (( j=0; j<length; j++ )); do printf "Current index %d with value %s\n" $j "${nombrearray[$j]}" done # --------
Resumiendo
Esta página explica varios métodos de bucle para pasar por matrices en Bash. Declare y bash tiene muchas otras opciones. Por lo tanto, para obtener más información sobre la matriz bash, consulte la siguiente documentación utilizando el comando help y el comando man :
man bash
help declare

-
Medioambiente
- Una calzada romana en los Alpes Suizos ¿Prueba de un clima cambiante más allá del calentamiento global?
- Un estudio revela que los microplásticos dificultan la fotosíntesis de las plantas
- El 'aumento exponencial' de los proyectos de energía geotérmica brinda esperanza para la energía verde
- Europa generó más electricidad con energía solar que con carbón en 2024
- Los científicos recomiendan a la UE detener la geoingeniería solar
- Madera en Masa: El Material que Revoluciona la Construcción Sostenible y los Rascacielos Modernos
- Nosotros, el Pueblo.
- ¿Pueden las bombas de calor todavía salvar al planeta del cambio climático?
- ¿Realmente el cambio de hora ahorra energía? Los expertos discrepan, pero destacan beneficios biológicos y sociales
- Investigadores del MIT construyen un sistema de desalinización de agua potable de bajo costo alimentado con energía solar
- El polvo de diamante podría enfriar el planeta a un costo de apenas billones de dólares
- Reversión del Vórtice Polar: Un Fenómeno Climático Sorprendente en 2024
- ¿Un terremoto global? Los científicos que estudian terremotos explican que fue el "objeto sísmico no identificado" global de 9 días
- ¿Culebra o víbora aprende a distinguirlas?
- Las granjas solares buscan producir algo más que energía: hábitats amigables para la vida silvestre