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.
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

Pin It

Escribir un comentario


Código de seguridad
Refescar



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