
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 curl
y grep
una vez para cada argumento; sugeriría revisar su enfoque del problema.