ich eine große Menge an Studenten Python Projekte am Testen. Ich habe einen Doctest in einer separaten Datei erstellt, die ich beispielsweise mydoctest.rst
aufgerufen habe.Mit bash for-Schleife Python doctest aus einer separaten Datei in Unterverzeichnissen läuft
Die erste Zeile des doctest Import Schüler Projekt des Moduls:
von project3 Import functionName-
Die doctest funktionieren gut, wenn ich es aus dem gleichen Verzeichnis wie Studentenprojekt nennen:
studentA$ python3 -m doctest mydoctest.rst
Was möchte ich tun, ist ein bash-for-Schleife Befehl verwenden, um die oben für jedes Unterverzeichnis zu tun, also habe ich versucht, die folg tun geschuldet.
parentdirectory$ for d in *; do python3 -m doctest "$d/"mydoctest.rst; done
Aber dann versucht, es für das Modul im aktuellen Verzeichnis zu suchen, anstatt in jedem Unterverzeichnis.
Gibt es eine Möglichkeit, um erste CD in jedes Unterverzeichnis vor do python3 -m doctest
tun?
Meine aktuelle Problemumgehung (die ich nicht glücklich bin) ist: für d in *; Mach CD "$ d"; python3 -m doctest mydoctest.rst; CD ..; getan
Was ist der Unterschied zwischen der Verwendung von ';' und '&&'? Sie scheinen das Gleiche zu tun. – egunawan
&& startet den Befehl danach in einem neuen Thread (aber die gleiche Umgebung) und es gibt keine Garantie, dass der Befehl vor dem Start abgeschlossen sein wird. Obwohl für etwas klein wie "CD", wird dies wahrscheinlich rechtzeitig abgeschlossen sein. – user2381984
Ich denke, Sie sprechen über '&'. ; ist ein Serialisierungsoperator, es wird zuerst den Befehl vor; dann der Befehl nach. & werde sie beide sofort machen, ohne auf einander zu warten. && ist ein boolescher Operator, er wertet zuerst den ersten Befehl aus, und wenn er falsch ist, weiß er, dass der ganze Ausdruck falsch ist, also wertet er den zweiten Befehl nicht aus. Wenn der erste Befehl wahr ist, wird der zweite Befehl ausgewertet, um zu sehen, ob das auch wahr ist. – 00prometheus