LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

¿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

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías