Как использовать переменные-аргументы в цикле for для скрипта bash?

Как использовать переменные-аргументы в цикле for для скрипта bash?

боролся с этим весь день. Так что у меня есть скрипт, который выглядит примерно так.

Команда терминала будет выглядеть примерно так:

script.sh ARG1 ARG2 ARG3 ARG4

Скрипт выглядит следующим образом:

totalargs=$#

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

Я пытаюсь добиться того, чтобы grep каждый второй аргумент, однако я не могу поместить аргумент в цикл с помощью $i. Что должно быть 2, а затем 4 в предоставленном случае, поскольку цикл повторяется.

Есть идеи? Довольно новичок в скриптах bash, поэтому любые советы приветствуются. Спасибо!

решение1

В bash вы можете использоватьпеременная косвенность

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

В POSIX вы можете сделать что-то вроде

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

Однако звонить по одному разу на каждый аргумент довольно неэффективно curlgrepя бы посоветовал пересмотреть ваш подход к проблеме.

Связанный контент