
一日中これに苦労していました。それで、次のようなスクリプトを作成しました。
ターミナルコマンドは次のようなものになります
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
。問題へのアプローチを見直すことをお勧めします。