如何在 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- 我建议修改你解决问题的方法。

相关内容