
боролся с этим весь день. Так что у меня есть скрипт, который выглядит примерно так.
Команда терминала будет выглядеть примерно так:
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
Однако звонить по одному разу на каждый аргумент довольно неэффективно curl
— grep
я бы посоветовал пересмотреть ваш подход к проблеме.