¿Cómo uso variables de argumento en un bucle for para un script bash?

¿Cómo uso variables de argumento en un bucle for para un script bash?

He estado luchando con esto todo el día. Entonces tengo un script que se parece a esto.

El comando de terminal sería algo así como

script.sh ARG1 ARG2 ARG3 ARG4

El guión tiene el siguiente aspecto:

totalargs=$#

for ((i=2; i<=totalargs; i+=2)); do
   curl somewebsite.com | grep "$i"
done

Lo que estoy tratando de lograr es agrupar todos los demás argumentos, sin embargo, parece que no puedo incluir el argumento en el bucle usando $i. Que debería ser 2 y luego 4 en el caso proporcionado a medida que el bucle se itera.

¿Algunas ideas? Bastante nuevo en los scripts de bash, por lo que se agradece cualquier orientación. ¡Gracias!

Respuesta1

En bash, puedes usardirección indirecta variable

for((i=2;i<=$#;i+=2)); do echo "${!i}"; done

POSIXly, podrías hacer algo como

while [ $# -gt 0 ]; do 
  echo "$2"
  shift; shift
done

Sin embargo, es bastante ineficiente llamar curly grepuna vez para cada argumento; sugeriría revisar su enfoque del problema.

información relacionada