Como uso variáveis ​​de argumento em um loop for para um script bash?

Como uso variáveis ​​de argumento em um loop for para um script bash?

tenho lutado com isso o dia todo. Então eu tenho um script que se parece com isso.

O comando do terminal seria algo parecido com

script.sh ARG1 ARG2 ARG3 ARG4

O script é o seguinte:

totalargs=$#

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

O que estou tentando alcançar é usar o grep para todos os outros argumentos, mas não consigo colocar o argumento no loop usando $i. Que deve ser 2 e depois 4 no caso fornecido à medida que o loop itera.

Alguma ideia? Muito novo em scripts bash, então qualquer orientação é apreciada. Obrigado!

Responder1

No bash, você pode usarindireção variável

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

POSIXly, você poderia fazer algo como

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

No entanto, é bastante ineficiente ligar curluma grepvez para cada argumento - sugiro revisar sua abordagem ao problema.

informação relacionada