一日中これのために苦労しました。だから私は次のスクリプトを持っています:
端末コマンドは次のようになります。
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
。問題へのアプローチを修正することをお勧めします。