GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Piping von stdout und stderr innerhalb einer Makefile-Regel

Es erklärt nicht, warum die einfachen Ansätze nicht funktionieren, aber es macht den Trick:

[Makefile]
test: 
    python test.py >test.out 2>&1; pyrg <test.out

Ich bin mit dem gleichen Problem auf diese Frage gestoßen und war mit der Antwort nicht zufrieden. Ich hatte einen binären TLBN das ist bei Testfall example2.TLBN fehlgeschlagen .

So sah meine Make-Datei zuerst aus.

make:
     ./TLBN example2.TLBN > ex2_output.txt

Was mit der erwarteten Fehlermeldung fehlschlug und den Make-Prozess anhielt.

Das ist meine Lösung:

make:
    -./TLBN example2.TLBN > ex2_output.txt 2>&1

Beachten Sie die - am Anfang der Zeile, die make anweist, alle Ausgaben an stderr zu ignorieren.

Hoffe, das hilft jemandem, der ein ähnliches Problem hat.


Seltsamerweise hatte ich das gleiche Problem und habe es so gelöst:

check-errors:
    check-for-errors.sh &> errors.txt

Ich bin mir nicht sicher, warum 2>&1 >errors.txt hat hier nicht funktioniert, aber &> tat


Linux
  1. So installieren und testen Sie Ansible unter Linux

  2. Konfigurieren Sie die Shell, um Stderr und Stdout in verschiedenen Farben zu drucken?

  3. Wie kann man Stderr und Stdout in verschiedene Dateien umleiten und auch im Terminal anzeigen?

  4. Unterschied zwischen Piping und Befehlserweiterung?

  5. Nur Stderr auf dem Bildschirm anzeigen, aber sowohl Stdout als auch Stderr in Datei schreiben?

So leiten Sie stderr in Bash auf stdout um

Verwirrt über stdin, stdout und stderr?

DESTDIR und PREFIX des Herstellers

Shell:leite stdout nach /dev/null und stderr nach stdout um

Makefile, um nichts zu tun

bash:leite stderr auf Datei und stdout + stderr auf Bildschirm um