Ich habe ein Build-Skript, in dem ich irgendwann make -j4
anrufen. Ich möchte jedoch nicht jedes Mal seine gesamte Ausgabe sehen; außer wenn ein Fehler vorliegt. Wie kann ich also die Ausgabe von make puffern und sie drucken, wenn sie ein Ergebnis ungleich null liefert?In Bash, wie kann ich die Ausgabe eines Befehls NUR anzeigen, wenn ein Fehler vorliegt?
Antwort
die Ausgabe in einer Variablen speichern war - und Druck auf Fehler
cmdout=$(make -j4 2>&1)
es=$?
if ((es)); then
echo >&2 "make error es $es: \"$cmdout\""
else
echo "make success"
fi
Ist 'if ((es)); dann stimmt der Teil? Sollte es "$ es" sein? – kubuzetto
In arithmetischen Bedingungen ((...)) können Sie nur Variablen mit ganzzahligen Werten verwenden und das Dollarzeichen "$" ist optional - ein weiterer Unterschied zu [[...]] besteht darin, dass kein vorangestelltes und nachfolgendes Leerzeichen benötigt wird ((...)) – pakistanprogrammerclub
Toller Tipp, danke! – kubuzetto
Speichern Sie die Ausgabe in eine temporäre Datei
tmp=$(mktemp)
make -j4 &> "$tmp"
und es nur zeigen, wenn ein Fehler
if (($?)) ; then
cat "$tmp"
fi
rm "$tmp"
Kann das gleiche Verhalten erreicht werden, ohne eine externe Datei zu erstellen? – kubuzetto
Btw +1 für mktemp, ich kannte diesen Befehl nicht! – kubuzetto
Sie können die Ausgabe auch in einer Variablen speichern, indem Sie 'output = $ (make -j4 2> & 1)'. Aber es kann ziemlich groß werden. – choroba
- 1. Wie kann ich die Ausgabe eines Opscode Chef Bash-Befehls in meiner Konsole anzeigen?
- 2. Bash - fangen Sie die Ausgabe eines Befehls
- 3. Wie wird die Ausgabe eines Befehls durchlaufen?
- 4. Wie bereinige ich die Ausgabe eines Bash-Skripts Ausgabe eines Befehls
- 5. Tastaturkürzel, die die Ausgabe eines Bash-Befehls einfügen wird
- 6. Anzeigen nur der letzten einzelnen Zeile der Ausgabe eines Befehls
- 7. Wie verwende ich die Ausgabe eines ls-Befehls in einer if-Anweisung in einer Bash-Shell
- 8. Liest die letzte Zeile der Ausgabe eines Bash-Befehls
- 9. Wie bekomme ich die Ausgabe eines Bash-Befehls in einer Variablen
- 10. Wie bekomme ich die Ausgabe eines externen Befehls in Perl?
- 11. Wie kann die Ausgabe eines Shell-Befehls ungepuffert erfolgen?
- 12. Wie man die Ausgabe eines Befehls einer Makefile-Variablen zuweist
- 13. Split Ausgabe des Befehls in ein assoziatives Array in bash
- 14. Bash sed Befehl ersetzen durch Ausgabe eines Befehls
- 15. RST: Wie präsentiert man die Ausgabe eines `tree` Befehls?
- 16. Wie überprüft man die Ausgabe eines Befehls in der Shell?
- 17. Ausgabe eines bestimmten Befehls nur in JSch Shell-Kanal
- 18. Wie kann ich die Ausgabe des Befehls "time" umleiten?
- 19. Wie beschränke ich die Ergebnisse des Befehls in bash suchen?
- 20. Wie bekomme ich die Ausgabe eines Powershell-Befehls in ein Array?
- 21. Wie kann ich die Ausgabe eines externen Befehls in einen neuen Puffer in Vim ausgeben?
- 22. Wie kann ich Ausgabe in Bash
- 23. Powershell - Versucht, eine Leerzeile zu erhalten, wenn ein Fehler vorliegt
- 24. Ausführen eines Bash-Befehls über CMake
- 25. Wie schneidet man die Ausgabe eines Powershell-Befehls ab?
- 26. Wie kann ich die Ausgabe eines Befehls als Compiler-Flag durch eine Qt-Projektdatei übergeben?
- 27. VIM: Ausgabe eines externen Befehls in ein Register speichern
- 28. Wie kann ich die Ausgabe eines Befehls bedingt an/dev/null umleiten?
- 29. In Perl, wie übertrage ich die Ausgabe eines Befehls an den Eingang eines anderen?
- 30. Nur die Eigenschaften eines Piped-Befehls eines Objekts anzeigen, das einem Kriterium entspricht
Wenn es einen Fehler gibt, wird es auf stderr sein. Machen Sie einfach 'make -j4>/dev/null' –
Was ich versuchte zu erreichen, war, die gesamte Ausgabe bei einem Fehler anzuzeigen, nicht nur, was auf stderr war. – kubuzetto