• Wichtig für neu Mitglieder

    Aktuell haben wir das Problem dass Mail an GoogleMail nicht ankommen. Wenn du dich registrien möchtest gib bitte keine GoogleMail an.

    Euer Forenteam

  • Herzlich Willkommen bei den Konsolen-Senioren!

    Wir sind eine deutschsprachige Community, die Spielern über 30 Jahren seit 2007 ein Zuhause im Internet bietet, in dem sie sich mit gleichgesinnten und erwachsenen Spielern über ihr Hobby austauschen und zu gemeinsamen Aktivitäten verabreden können.

    Entstanden aus den Xbox-Senioren (früher: XBL-Senioren) und den PSN-Senioren bieten wir mittlerweile eine konsolenübergreifende Diskussions- und Verabredungsplattform, bei der das respektvolle Miteinander und der Spaß am Hobby im Vordergrund stehen.

    Neben konsolenspezifischen Unterforen und Multiplattform-Spielethreads bieten wir auch eine Retro-Ecke und einen Bereich, in dem sich für die immer größer werdende Anzahl Spielen, die Cross-Plattform-Play unterstützen, verabredet werden kann.

    Egal, ob Du einfach nur über Spiele diskutieren möchtest, Dich mit anderen Spielern verabredet willst oder einfach nur Deine Spielerfahrungen mit anderen teilen möchtest, bist Du bei uns herzlich willkommen.

    Natürlich kannst Du auch einfach weiter passiv bei uns mitlesen, aber warum schnappst Du Dir nicht einfach Deine Tastatur, registrierst Dich bei uns und gestaltest die Community durch Deine Teilnahme aktiv mit?

    Wir freuen uns auf Dich!

Technik für Noobs, only for Dimo und Stosi

Stosi

Pförtner des Altenheims
@Dimo2006

Ich hasse Linux!

Herr Lehrer, Herr Lehrer!
Isch hab da mal ne Fräge....

Wie kann man die beiden Schleifen zusammenführen?

Code:
while read Variable1; do
 Befehl1
done < /pfad/zum/file/1file.local

Code:
while read Variable2; do
 Befehl2
done < /pfad/zum/file/2file.local

Isch glöb, ich muss :kotzen:

PS: Hat nichts mit Routern zu tun... echt nicht!

#Edit

Könnte man das so machen?
Code:
while read Variable1 && read Variable2 <&2; do
  Befehl1;
  Befehl2
done < /pfad/zum/file1.dimo 2< /pfad/zum/file2.dimo
#Edit2

Ein hab ich noch....
Achtung scharf!
Geil.... ist bei Amazon für 90,- verfügbar.

#Edit3

So gehts:
Code:
while read Variable1 || read Variable2 <&2; do   
    Befehl1;   
    Befehl2 
done < /pfad/zum/file1.dimo 2< /pfad/zum/file2.dimo
 
Zuletzt bearbeitet:

Dimo2006

Frührentner
@Dimo2006

So gehts:
Code:
while read Variable1 || read Variable2 <&2; do   
    Befehl1;   
    Befehl2 
done < /pfad/zum/file1.dimo 2< /pfad/zum/file2.dimo


JEIN.... je nach dem was Du abfragst, kann das auch nach hinten losgehen:

Was machst Du wenn:

Varable1 nichts mehr zu lesen hat aber Variable2? Dann wird der Befehl1 auch ausgelöst
und das kann zu "Exceptions" oder "Hängern" führen (er liest etwas, obwohl da nichts mehr ist,
oder er list etwas über den gültigen Bereich hinaus und liefert nur Müll zurück).

Daher:


Code:
while read Variable1 || read Variable2 <&2;
  do   
   if Variable1<&2  Befehl1;   
   if Variable2<&2  Befehl2; 
done < /pfad/zum/file1.dimo 2< /pfad/zum/file2.dimo
 

Stosi

Pförtner des Altenheims
Varable1 nichts mehr zu lesen hat aber Variable2? Dann wird der Befehl1 auch ausgelöst
und das kann zu "Exceptions" oder "Hängern" führen (er liest etwas, obwohl da nichts mehr ist,
oder er list etwas über den gültigen Bereich hinaus und liefert nur Müll zurück).

Daher:


Code:
while read Variable1 || read Variable2 <&2;
  do   
   if Variable1<&2  Befehl1;   
   if Variable2<&2  Befehl2; 
done < /pfad/zum/file1.dimo 2< /pfad/zum/file2.dimo

Hmmm......

Also in den Befehlen wird Bezug zu den Variablen genommen.
Dann dürfte er es doch nicht ausführen, wenn z.B. in File1 keine Werte stehen.
Code:
    while read CLIENT || read URL <&2; do
       iptables -t nat -A CUSTOMPREROUTING -s $CLIENT -j RETURN;
       iptables -t nat -A CUSTOMPREROUTING -p tcp --dport 80 -d $URL -j RETURN
    done < /etc/sysconfig/client_exceptions.local 2< /etc/sysconfig/url_exceptions.local

#Edit
Warum hast du bei beiden Variablen die 2 als Filedeskriptor?
Wobei ich gerade gesehen habe, dass man nur 3-9 nehmen soll.
 
Zuletzt bearbeitet:

Dimo2006

Frührentner
Hmmm......

Also in den Befehlen wird Bezug zu den Variablen genommen.
Dann dürfte er es doch nicht ausführen, wenn z.B. in File1 keine Werte stehen.
Code:
    while read CLIENT || read URL <&2; do
       iptables -t nat -A CUSTOMPREROUTING -s $CLIENT -j RETURN;
       iptables -t nat -A CUSTOMPREROUTING -p tcp --dport 80 -d $URL -j RETURN
    done < /etc/sysconfig/client_exceptions.local 2< /etc/sysconfig/url_exceptions.local


Ich kenn nun den Syntax / Grammatik nicht 100% aber...

"while read CLIENT || read URL <&2;"

würde bei anderen Sprachen nur den hinteren Teil beachten... der vordere hat keine Bedingung...

Deine Bedingung könnte auch so interpretiert werden:

(0) || (Bedingung2= 1) => ausführen
(0) || (Bedingung2= 0) => nicht ausführen


Eigentlich macht man das so:

while (read CLIENT <&2) || (read URL <&2) do XYZ


heißt dann

(Bedingung1 = 1) || (Bedingung2= 1) = 1 ausführen
(Bedingung1 = 1) || (Bedingung2= 0) = 1 ausführen
(Bedingung1 = 0) || (Bedingung2= 1) = 1 ausführen
(Bedingung1 = 0) || (Bedingung2= 0) = 0 nicht ausführen
[es wird immer der boolesche Wert beachtet, daher die 0/1]




Das solltest Du mal unbedingt überprüfen...
 

Dimo2006

Frührentner
Das hatte ich bei dem: while read Variable1 && read Variable2 <&2; do

Da wurde immer nur die erste Zeile in beiden Files eingelesen, weil File2 nur einen Wert hatte.



while read Variable1 && read Variable2 <&2; do

(0) && (Bedingung2=1) => nicht ausführen
(0) && (Bedingung2=0) => nicht ausführen
(1) && (Bedingung2=0) => nicht ausführen
(1) && (Bedingung2=1) => ausführen


Eigentlich macht man das so:

while (read CLIENT <&2) && (read URL <&2) do XYZ


heißt dann

(Bedingung1 = 1) && (Bedingung2= 1) = 1 ausführen
(Bedingung1 = 1) && (Bedingung2= 0) = 0 nicht ausführen
(Bedingung1 = 0) && (Bedingung2= 1) = 0 nicht ausführen
(Bedingung1 = 0) && (Bedingung2= 0) = 0 nicht ausführen
[es wird immer der boolesche Wert beachtet, daher die 0/1]

wobei natürlich immer fraglich ist, was der Skript-Interpreter daraus macht. Je kürzer der Syntax gemacht werden kann,
desto mehr Fehler können sich dann einschleichen, deshalb schreibt man ja auch die Bedingungen aus, damit der Code
auch später (für andere) lesbar bleibt. :senior:
Es ist aber auf fraglich, was Dein "read" da zurückgibt... müsste man sich mal anschauen - oder auch nicht :silly:

Zudem: müssen wirklich beide Befehle ausgeführt, wenn eine der read-Bedingungen eintritt?
 

Stosi

Pförtner des Altenheims
Zudem: müssen wirklich beide Befehle ausgeführt, wenn eine der read-Bedingungen eintritt?

Huhu!

Nö, muss nicht.
Also eine Abfrage vorab..... grgrrrrr

Kennste nen gutes Buch? "Shell Script for Stosi's" oder so?

#Edit
Es ist aber fraglich, was Dein "read" da zurückgibt

Die Zeichenkette aus den Dateien.

#Edit2

So???????????
Code:
while read CLIENT; do 
    if [ -n $CLIENT ]; then
      iptables -t nat -A CUSTOMPREROUTING -s $CLIENT -j RETURN
    fi
done </etc/sysconfig/client_exceptions.local
 
Zuletzt bearbeitet:

Dimo2006

Frührentner
Huhu!

Nö, muss nicht.
Also eine Abfrage vorab..... grgrrrrr

Kennste nen gutes Buch? "Shell Script for Stosi's" oder so?

#Edit


Die Zeichenkette aus den Dateien.

#Edit2

So???????????
Code:
while read CLIENT; do 
    if [ -n $CLIENT ]; then
      iptables -t nat -A CUSTOMPREROUTING -s $CLIENT -j RETURN
    fi
done </etc/sysconfig/client_exceptions.local



Müssen beide Dateien gleichzeitig gelesen werden oder geht das auch nacheinander?
 
Oben