LinuxParty
NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
¿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
- 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
- Cómo instalar NodeJS 14/16 y NPM en Rocky Linux 8