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. 문제에 대한 접근 방식을 수정하는 것이 좋습니다.

관련 정보