[gelöst] Doppelte for Schleife nötig?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
tomi89
Beiträge: 269
Registriert: 21.08.2014 00:21:52

[gelöst] Doppelte for Schleife nötig?

Beitrag von tomi89 » 26.09.2015 19:10:49

Hallo Debianer,

kann mir vielleicht jemand sagen wie man das nachfolgende Problem lösen kann?

Ich bin einfach zu blöd dafür.

Zu Erst habe ich folgende Variablen erstellt:

Code: Alles auswählen

CHANNELS=$(ip -4 -o a | awk '{print $2","$4}' | grep -v "^lo")
QUANTITY=$(echo "$CHANNELS" | grep -c "")
Dann kommt das Problem. Die For-Schleife würde eigentlich passen, jedoch bräuchte ich quasi 2 Stück davon gleichzeitig. D.H. nicht nacheinander.

Also ich brauche quasi folgendes beides:

Code: Alles auswählen

for x in $CHANNELS; do
for counter in `seq $QUANTITY`; do
darauf müsste dann das hier folgen:

Code: Alles auswählen

CHANNEL_IFACE=$(echo "$x" | cut -d "," -f 1) ; CHANNEL_IP=$(echo "$x" | cut -d "," -f 2)
echo "ip route add default dev $CHANNEL_IFACE via $CHANNEL_IP table channel$counter"
Das soll eigentlich für ein Shell-Script (.sh) sein, aber wenn es nicht anders geht könnte ich wahrscheinlich auch ein Bash-Script daraus machen.

EDITED
Zuletzt geändert von tomi89 am 26.09.2015 21:09:32, insgesamt 3-mal geändert.

wanne
Moderator
Beiträge: 7548
Registriert: 24.05.2010 12:39:42

Re: Doppelte for Schleife nötig?

Beitrag von wanne » 26.09.2015 20:36:54

Code: Alles auswählen

for x in $CHANNELS; 
  do for counter in $(seq $QUANTITY); 
    do CHANNEL_IFACE=$(echo "$x" | cut -d "," -f 1) ; CHANNEL_IP=$(echo "$x" | cut -d "," -f 2)
    echo "ip route add default dev $CHANNEL_IFACE via $CHANNEL_IP table channel$counter"
  done
done
?
rot: Moderator wanne spricht, default: User wanne spricht.

tomi89
Beiträge: 269
Registriert: 21.08.2014 00:21:52

Re: Doppelte for Schleife nötig?

Beitrag von tomi89 » 26.09.2015 20:48:25

@wanne Danke für die Antwort.

So klappt es leider nicht, das Ergebnis sieht dann so aus:

Code: Alles auswählen

ip route add default dev lo via 127.0.0.1/8 table channel1
ip route add default dev lo via 127.0.0.1/8 table channel2
ip route add default dev wlan0 via 192.168.1.8/24 table channel1
ip route add default dev wlan0 via 192.168.1.8/24 table channel2
Und wenn man die Reihenfolge der mit for beginnenden Zeilen herumdreht sieht das Ergebnis so aus:

Code: Alles auswählen

ip route add default dev lo via 127.0.0.1/8 table channel1
ip route add default dev wlan0 via 192.168.1.8/24 table channel1
ip route add default dev lo via 127.0.0.1/8 table channel2
ip route add default dev wlan0 via 192.168.1.8/24 table channel2
Aber ich wüsste auch nicht wie man es sonst noch versuchen könnte. Googlen hat mir bisher auch nicht geholfen.
Zuletzt geändert von tomi89 am 26.09.2015 20:59:46, insgesamt 1-mal geändert.

wanne
Moderator
Beiträge: 7548
Registriert: 24.05.2010 12:39:42

Re: Doppelte for Schleife nötig?

Beitrag von wanne » 26.09.2015 20:53:33

Ja. Und was ist daran falsch?
rot: Moderator wanne spricht, default: User wanne spricht.

wanne
Moderator
Beiträge: 7548
Registriert: 24.05.2010 12:39:42

Re: Doppelte for Schleife nötig?

Beitrag von wanne » 26.09.2015 20:57:31

Halt jetzt weiß ich was du willst:

Code: Alles auswählen

counter=0
for x in $CHANNELS; 
  do counter=$(($counter+1))
  CHANNEL_IFACE=$(echo "$x" | cut -d "," -f 1) ; CHANNEL_IP=$(echo "$x" | cut -d "," -f 2)
  echo "ip route add default dev $CHANNEL_IFACE via $CHANNEL_IP table channel$counter"
done
rot: Moderator wanne spricht, default: User wanne spricht.

tomi89
Beiträge: 269
Registriert: 21.08.2014 00:21:52

Re: Doppelte for Schleife nötig?

Beitrag von tomi89 » 26.09.2015 21:09:07

Ja Volltreffer! Vielen Dank dafür.

Antworten