하루종일 이것 때문에 고생했어요. 그래서 저는 다음과 같은 스크립트를 가지고 있습니다.
터미널 명령은 다음과 유사합니다.
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
. 문제에 대한 접근 방식을 수정하는 것이 좋습니다.