
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
curl
Es ist jedoch ziemlich ineffizient , für jedes Argument einmal aufzurufen. grep
Ich würde vorschlagen, Ihren Ansatz zum Problem zu überdenken.