Ich bin neu in Shell-Skript. Ich möchte eine Liste von make-Dateien vom Shell-Skript in einer bestimmten Reihenfolge aufrufen. Für jedes Makefile möchte ich das Ergebnis erhalten (make ist Erfolg oder Misserfolg). Wenn ein Fehler auftritt, möchte ich die Skriptausführung stoppen. Wenn es erfolgreich ist, muss ich das nächste Makefile ausführen.Aufruf von Makefiles von Shell Script
Antwort
Ein gängiges Idiom ist es, ein Shell-Skript mit set -e
zu erstellen; Dies führt dazu, dass das Skript beim ersten Fehler beendet wird.
#!/bin/sh
set -e
make -f Makefile1
make -f Makefile2
:
Wenn Sie mehr Kontrolle über das Skript insgesamt benötigen, entfernen Sie vielleicht set -e
und stattdessen explizit Ausgang auf make
failure:
make -f Makefile1 || exit
make -f Makefile2 || exit
Um Code-Duplizierung zu reduzieren, erstellen Sie eine Schleife:
for f in Makefile1 Makefile2; do
make -f "$f" || exit
done
Nur um explizit zu sein, die ||
"oder" und &&
"und" Konnektoren sind Abkürzungen für
if make -f Makefile1; then
: "and" part
else
: "or" part
fi
Schließlich klingt das Verhalten, das Sie beschreiben, genau wie Make sich verhält. Vielleicht wäre ein Makefile auf oberster Ebene tatsächlich eine geeignete Lösung für Ihr Szenario?
make -f makefile1
make -f makefile2
machen Dateien laufen, um die Ausgabe jeder Make-Datei
make -f makefile1 >> output1
make -f makefile2 >> output2
zu überprüfen, um das Ergebnis zu speichern, nachdem jede Datei
make -f makefile1 >> output1
nach dieser Zeile Skript machen Verwenden Sie
echo $? dies in Kombination mit if. wenn echo $? Ergebnis Null dann machen Sie Ihren Erfolg, wenn Echo $? Ergebnis 0, dann nächste Datei laufen lassen andere weise beenden
Es könnte hilfreich sein, auch die Fehler zu protokollieren, d. H. 'Make -f makefile1 & >> output1' – pfnuesel
- 1. Shell-Befehle in Makefiles
- 2. Shell Script Aufruf Fehler - Xcode 6
- 3. bash script shell input
- 4. Shell Script Segmentation Fault
- 5. Shell Script Tilde Expansion
- 6. Shell Script - Vergleichen von Textzeilen, Löschen von Treffern
- 7. Bibliotheksverwaltung mit Shell Script
- 8. Fehler Shell Script
- 9. Shell Script Json, Mac
- 10. Shell Bash Script
- 11. Shell Script funktioniert nicht
- 12. Rscript Aufruf von Linux-Shell-Skript
- 13. Shell-Skript-Aufruf fehlgeschlagen von Oozie
- 14. Shell-Script "für" Schleife Syntax
- 15. Tool zum Debuggen von Makefiles
- 16. Bedeutung von -DHAVE_CONFIG_H in Makefiles
- 17. Shell Script SCP Rückgabecode 1
- 18. Killing Prozess in Shell Script
- 19. Shell Script: Mischen von getopts mit Positionsparametern möglich?
- 20. Shell Script/Befehl von MySQL ausführen Trigger/Gespeicherte Prozedur
- 21. Makefile und Shell Script (Bash)
- 22. Shell Script + schreiben einen String
- 23. Aufruf Ant Script-Datei von Java-Klasse selbst
- 24. JavaFX Script-Aufruf-Funktion von meiner eigenen Java-Klasse
- 25. Hinzufügen von mehrzeiligen Kommentaren in Makefiles
- 26. Makefiles CFLAGS
- 27. Python Shell Aufruf an exiftool
- 28. Wie setze ich Umgebungsvariablen von Sub-Makefiles auf das Root-Makefile oder meine aktuelle Shell?
- 29. Apple Script + Shell Script: Wie konvertiere ich dieses Shell-Skript in Apple-Skript?
- 30. Aufruf von CL.exe (MSVC-Compiler) in Cygwin Shell
Wie 'make1 && make2 && make3'? – pfnuesel
Oder 'make -f makefile1 && make -f makefile2 && ...' – devnull