Wie verwende ich Argumentvariablen in einer For-Schleife für ein Bash-Skript?

Wie verwende ich Argumentvariablen in einer For-Schleife für ein Bash-Skript?

habe den ganzen Tag damit gekämpft. Also habe ich ein Skript, das ungefähr so ​​aussieht.

Der Terminalbefehl würde etwa so lauten:

script.sh ARG1 ARG2 ARG3 ARG4

Das Skript sieht wie folgt aus:

totalargs=$#

for ((i=2; i<=totalargs; i+=2)); do
   curl somewebsite.com | grep "$i"
done

Ich versuche, jedes andere Argument zu greppen, aber ich schaffe es nicht, das Argument mit $i in die Schleife zu bekommen. Das sollte im angegebenen Fall 2 und dann 4 sein, wenn die Schleife iteriert.

Irgendwelche Ideen? Ich bin ziemlich neu bei Bash-Skripten, daher bin ich für jede Hilfe dankbar. Danke!

Antwort1

In Bash können Sie verwendenVariablenindirektion

for((i=2;i<=$#;i+=2)); do echo "${!i}"; done

POSIX-mäßig könnten Sie so etwas tun wie

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

curlEs ist jedoch ziemlich ineffizient , für jedes Argument einmal aufzurufen. grepIch würde vorschlagen, Ihren Ansatz zum Problem zu überdenken.

verwandte Informationen