![]() |
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| Loop-Problem | Paddock | Shell Programmierung und Scripting | 2 | 09-23-2008 10:15 AM |
| for-Schleife Problem | mdap | Shell Programmierung und Scripting | 3 | 08-16-2008 01:27 PM |
| Problem bei for-Schleife | The Observer | Shell Programmierung und Scripting | 2 | 05-28-2008 02:43 AM |
| Problem mit der while-Schleife und SQL | nandajk | UNIX for Dummies Questions & Answers | 20 | 05-04-2007 06:19 AM |
| Problem mit der while-Schleife | mridula | High-Level-Programmierung | 1 | 12-11-2005 11:44 AM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Doppel-while-Schleife Problem
Hallo, ich habe auf ein seltsames Problem mit der Doppel-while-Schleife. Das Ziel der beiden while-Schleifen ist zu vergleichen 2 Dateien, tmplist.txt ist die Referenz-Datei mit der vollständigen Liste von Servern. Bitte lesen Sie das beigefügte Bild für die Logik und das Verhältnis zwischen Input und Output.
Die 2-while-Schleifen sollte die Suche die Server in / test.csv in der / tmplist.txt, Zeile für Zeile. Zum Beispiel, Suche ersten Eintrag in / test.csv Server2 in / tmplist.txt, angefangen von der ersten Zeile in / tmplist.txt (LineNum \u003d 1), wenn nicht gefunden werden, wird Ausgang ein "NA" und gehen Sie dann zur nächsten Zeile in / tmplist.txt, bis sie die passende Server2, und zu aktualisieren LineNum gleichzeitig. Else, wird die Suche der nächsten Server server3 in / tmplist.txt aus dem aktuelle Zeile ab (da alle Server sind immer in alphabatic um). Die Variable LineNum (Indikator für die Zeilennummer), die in der inneren while-Schleife. Es ist als 1, wenn nach dem Zustand if [$ server \u003d $ refs] wahr ist, wird LineNum Inkrement und dann brechen Sie die innere while-Schleife und in der äußeren while-Schleife. Allerdings, in der äußeren while-Schleife, jedes Mal, wenn er Loops und liest SERVER COUNT, die LineNum beginnt mit dem ersten Wert 1 wieder statt von der erhöhten LineNum aus der inneren while-Schleife. Im Folgenden zeigt einen Teil des Programms mit den Einzelheiten von 2 while-Schleifen. Kann jemand helfen, zu erklären mir, was ist hier falsch? Dies ist meine erste UNIX-Zuordnung, wirklich danken Ihnen für Ihre Unterstützung! #! / bin / bash TYPE \u003d P2PS LineNum \u003d 1 while read Server Count; tun Katze tmplist.txt | while read LINE; tun Refs \u003d $ (Kopf - $ LineNum tmplist.txt | tail -1) if [$ server \u003d $ refs], dann Lassen Sie LineNum + + echo-n "," $ COUNT>> t.csv Pause sonst Lassen Sie LineNum + + echo-n "NA">> t.csv weiter fi getan done <test.csv |
|
||||
|
Es besteht keine Notwendigkeit für 2 Loops, müssen Sie leistungsfähige UNIX-Befehle in Ihren Skripten, wie grep. Diese sollten:
Natürlich, t.csv müssen leer sein, bevor das Skript. while read LINE tun aux \u003d $ (grep $ LINE test.csv) if [[! -z $ aux]] dann echo "$ aux">> t.csv sonst echo "NA">> t.csv fi done <tmplist.txt |
|
||||
|
die in der inneren Schleife ist ein subProzess. Alle Variablen gesetzt oder verändert innerhalb der inneren Schleife sind nicht bekannt, außerhalb davon. Wenn die Dateien sind kleiner versuchen, während der Austausch-Konstrukt gegen eine for-Schleife. Ist dies nicht der Fall, speichern Meta-Informationen in der inneren Schleife in Dateien, um sie außerhalb. Aber dies kann die Geschwindigkeit sehr viel.
Aber eigentlich sehe ich nicht die Notwendigkeit für Doppel-Loops. Warum nicht grep jede Zeile aus tmplist.txt auf die erste Datei? |
![]() |
| Lesezeichen |
| Tags |
| Unix-Befehle |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|