bash 스크립트의 for 루프에서 매개변수 변수를 사용하는 방법은 무엇입니까?

bash 스크립트의 for 루프에서 매개변수 변수를 사용하는 방법은 무엇입니까?

하루종일 이것 때문에 고생했어요. 그래서 저는 다음과 같은 스크립트를 가지고 있습니다.

터미널 명령은 다음과 유사합니다.

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

POSIXly, 다음과 같은 작업을 수행할 수 있습니다.

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

curl그러나 각 인수에 대해 한 번 호출하는 것은 매우 비효율적입니다 grep. 문제에 대한 접근 방식을 수정하는 것이 좋습니다.

관련 정보