Anfänger hier so mit mir zu tragen. Ich versuche, Hausaufgabeneinreichungen aus einer Lösungsdatei und einer Schülereinreichungsdatei zu vergleichen. Der Inhalt der einzelnen Dateien hat drei Probleme, ein pro Zeile:Verschachtelte While-Schleife funktioniert nicht in Bash
problem 1 code
problem 2 code
problem 3 code
Ich mag jede Zeile in der Lösung mit der entsprechenden Zeile in den Studenten Vorlage vergleichen. Ich benutze eine for-Schleife, um durch jede Student-Datei und eine geschachtelte while-Schleife zu durchlaufen, um durch jede Zeile der Lösungsdatei und Student-Datei zu durchlaufen. Aus irgendeinem Grund ignoriert das Skript die while-Schleife vollständig. Ich habe zwischen jeder Zeile setzt Echos, um zu sehen, wo das Problem ist (die echo $ Lösung und echo $ Vorlage ist nur zu überprüfen, um zu sehen, ob der Pfad korrekt ist):
for submission in /home/myfolder/submissions/*
do
echo 1
solution=$(echo /home/myfolder/hwsolution/*)
echo 2
echo $solution
echo $submission
while read sans <&1 && read sol <&2
do
echo 3
echo Student awnser is: $sans
echo Solution is: $sol
echo 4
done 1<$(echo $submission) 2<$(echo $(echo $solution))
echo 5
done
Wenn ich es laufen erhalte ich:
1
2
/home/myfolder/hwsolution/solution
/home/myfolder/submissions/student1
5
1
2
/home/myfolder/hwsolution/solution
/home/myfolder/submissions/student2
5
1
2
/home/myfolder/hwsolution/solution
/home/myfolder/submissions/student3
5
Es gibt keine geschachtelte while-Schleife in Ihrem Code, und es ist nicht klar, wie sich die von Ihnen gepostete Ausgabe auf die von Ihnen * erwartete * oder gewünschte Ausgabe bezieht. –
Es ist auch nicht klar, welche nützliche Sache Sie erwarten '1 <$ (echo $ submission)' oder '2 <$ (echo $ (echo $ solution))' zu erreichen. (Auch die Verwendung von Dateideskriptor 1 oder Dateideskriptor 2 zur Eingabe ist eine * wirklich * schlechte Idee, da diese beiden für stdout bzw. stderr reserviert sind). –
... möchten Sie vielleicht * den Inhalt der Dateien * lesen? Wenn ja, dann willst du '<" $ solution "', ohne 'echo'. –