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