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
-
Scripting
- Iniciar una aplicación o un programa automáticamente desde el Cron en Linux
- Operaciones matemáticas en Shell Scripts
- 30 formas de validar archivos de configuración o scripts en Linux
- Operaciones artiméticas en Shell Scripts
- Cómo intercambiar el contenido de dos archivos en Linux
- Buscar directorios vacíos en Linux y borrarlos si procede.
- Shell Script Linux: Renombra quitando espacios
- Usar con crontab - último sábado del mes
- Shell Script de Linux para analizar un Fichero Access.log
- Analizar ficheros log de Linux con Scripts
- woof Código fuente
- Como tener seguro, protegido y encriptado tu Navegador Web Firefox (versión mejorada - versión 3)
- Arrays en Bash y Loops: iterar a través de los valores de la matriz
- Pasar una variable a AWK mediante la Shell.
- System Tar and Restore: un versátil script de copia de seguridad del sistema para Linux