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

POSIX的には、次のようにすることができます

while [ $# -gt 0 ]; do 
  echo "$2"
  shift; shift
done

curlただし、引数ごとにand を1 回ずつ呼び出すのは非効率的ですgrep。問題へのアプローチを見直すことをお勧めします。

関連情報