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。問題へのアプローチを修正することをお勧めします。

関連情報