¿Cómo se puede iterar por todos los argumentos pasados a un script de bash?

Tengo una tarea compleja que quiero convertir en un script de bash/shell. Aunque puedo utilizar la sintaxis $1 para hacer referencia a los argumentos que se le pasan, me gustaría contar con una solución general.

En otras palabras, quiero iterar por todos los argumentos que se le pasen al script, independientemente de cuántos sean.

Estás leyendo una traducción autorizada de la pregunta How to iterate over arguments in bash script planteada por Thelema en StackOverflow.

Respuestas

#1

Para hacer referencia a todos los argumentos del script, utiliza $@ de la siguiente manera:

for var in "$@"
do
    echo "$var"
done

Este script lo que hace es iterar por todos los argumentos y mostrarlos por pantalla. El comportamiento de $@ es similar a $*, pero también funciona cuando se pasan argumentos con espacios en su interior. Ejemplo:

sh prueba.sh 1 2 '3 4'
1
2
3 4