一整天都在为此苦苦挣扎。所以我有一个看起来像这样的脚本。
终端命令类似于
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
- 我建议修改你解决问题的方法。