Recorriendo una lista de Strings con Bash

Bash es un lenguaje de programación de scripting muy popular en sistemas Unix y Linux. Un bash-script básico consiste en una serie de comandos de shell ejecutados en secuencia. A menudo, se necesita recorrer una lista de strings para realizar una serie de tareas, como la iteración de un conjunto de archivos o la ejecución de una secuencia de comandos con diferentes argumentos. En este artículo, aprenderemos a hacer esto de manera sencilla y eficiente en Bash.
Recorriendo una lista de Strings
Para recorrer una lista de strings en Bash, podemos utilizar el bucle for. El formato básico del bucle for es:
for var in cadena1 cadena2 cadena3 ... cadenaN
do
comando1
comando2
....
...
done
En este ejemplo, var es una variable de iteración que toma el valor de cada cadena en la lista. Los comandos dentro del bucle se ejecutan para cada valor de var.
Por ejemplo, para recorrer una lista de nombres y hacer un saludo personalizado a cada uno de ellos, podemos utilizar el siguiente script:
#!/bin/bash
names=("Ana" "Juan" "María" "Carlos")
for name in "${names[@]}"
do
echo "Hola $name, ¿cómo estás?"
done
Este script imprimirá el saludo personalizado para cada elemento en la lista de nombres.
Especificando el rango de la lista
Si queremos recorrer solo un rango específico de la lista, podemos hacerlo especificando los índices de inicio y fin del rango. El siguiente ejemplo muestra cómo imprimir los nombres en una lista de índice 1 a 3:
#!/bin/bash
names=("Ana" "Juan" "María" "Carlos")
for (( i=1; i<=3; i++ )) do echo "${names[$i]}" done
Este script imprimirá los nombres "Juan", "María" y "Carlos".
Ejecutando comandos para cada elemento en la lista
Si queremos ejecutar un comando para cada elemento en la lista, podemos usar el bucle for de la siguiente manera:
#!/bin/bash
files=("file1.txt" "file2.txt" "file3.txt")
for file in "${files[@]}"
do
cat $file
done
Este script imprimirá el contenido de cada archivo en la lista.
Conclusión
Recorrer una lista de strings en Bash es fácil y rápido utilizando el bucle for. Este tipo de iteración es muy útil para realizar tareas repetitivas en un conjunto de datos. Con este artículo, has aprendido cómo recorrer una lista de strings y cómo utilizar el bucle for en Bash.
Preguntas frecuentes
¿Puedo usar una variable distinta de 'var' en el bucle for?
Sí, puedes usar cualquier variable de tu elección. Por ejemplo, si quieres utilizar 'name' en lugar de 'var', este es el formato que deberás usar:
for name in cadena1 cadena2 cadena3 ... cadenaN
do
comando1
comando2
....
...
done
¿Puedo agregar un comando if dentro del bucle for?
Sí, puedes agregar comandos if dentro del bucle for para realizar diferentes acciones según una condición. Por ejemplo, el siguiente código imprimirá 'Hola' para cada nombre en la lista, pero solo imprimirá 'Bienvenido' para el nombre 'Juan':
#!/bin/bash
names=("Ana" "Juan" "María" "Carlos")
for name in "${names[@]}"
do
echo "Hola $name"
if [ $name == "Juan" ]
then
echo "Bienvenido $name"
fi
done
¿Puedo utilizar el bucle for para iterar sobre una lista de números?
Sí, el bucle for también funciona para iterar sobre una lista de números. Por ejemplo, el siguiente código imprimirá los números del 1 al 5:
#!/bin/bash
for i in {1..5}
do
echo $i
done
¿Cómo puedo declarar una lista de strings en Bash?
Puedes declarar una lista de strings en Bash utilizando la siguiente sintaxis:
lista=("cadena1" "cadena2" "cadena3" ... "cadenaN")
Por ejemplo:
#!/bin/bash
names=("Ana" "Juan" "María" "Carlos")
Para agregar elementos a la lista, puedes utilizar el siguiente formato:
lista=("${lista[@]}" "nuevo-elemento")
Por ejemplo:
#!/bin/bash
names=("Ana" "Juan" "María" "Carlos")
names=("${names[@]}" "Pedro")
Ejemplos de código
Aquí te presentamos algunos ejemplos de código que usan el bucle for para recorrer una lista de strings en Bash:
- Imprimir todos los archivos en una carpeta:
- Borrar todos los archivos en una carpeta:
- Ejecutar un comando para cada archivo en una lista:
#!/bin/bash
for file in /ruta/a/la/carpeta/*
do
echo $file
done
#!/bin/bash
files=(/ruta/a/la/carpeta/*)
for file in "${files[@]}"
do
rm $file
done
#!/bin/bash
files=("file1.txt" "file2.txt" "file3.txt")
for file in "${files[@]}"
do
cat $file > output.txt
done
[nekopost slugs="interpolacion-variable-en-shell-bash,guia-de-personalizacion-de-terminal-de-linux-principiantes,echo-newline-bash,awk-trim-whitpace,nr-construido-en-awk,la-mejor-manera-de-aprender-scripting-de-bash,como-insertar-una-linea-despues-del-partido-usando-sed,generar-una-fiesta-de-numeros-aleatorios,personalizar-la-configuracion-de-tmux"]

Deja una respuesta