Bash-Funktionsausgabe an Pipe

Bash-Funktionsausgabe an Pipe

Ich habe eine Bash-Funktion erstellt svn, um die Ausgabe zu verschönern. Diese Funktion zeigt eine Zeile pro Commit an. Das ist großartig! Ich mag sie, aber wenn ich sie mit Pipe verwende, funktioniert sie nicht. Sie finden sie aufGitHub SVN-Verschönern

$ svn -log -l 2
r22  fabio  2014-03-27 12:38:10 +0100 (gio, 27 mar 2014)  1 line  Some comments
r23  fabio  2014-03-27 13:35:17 +0100 (gio, 27 mar 2014)  1 line  Some comments

es wäre schön, wenn ich es mit verwenden könnte | grep.

Antwort1

Du hast das:

if [ "$SVN_COLOR" != "always" ] && ( 
        [ $NOCOL = 1 ] || [ "$SVN_COLOR" = "never" ] || [ ! -t 1 ]
)

Es ist der [ ! -t 1 ]Test, der dazu führt, dass Ihre Funktion zu früh zurückkehrt. Wenn Sie Ihre Funktion in eine Pipe leiten, wird stdout (Dateideskriptor 1)nichtein Terminal.

Antwort2

Dies ist definitiv kein allgemeines Bash-Funktions-mit-Pipes-Problem.

~$ x() { ls "$@" ; }
~$ x / | cat -n | head
     1  bin
     2  boot
     3  dev
     4  etc
     5  home
     6  initrd.img
     7  initrd.img.old
     8  lib
     9  lib32
    10  lib64

...gibt es keine spezielle Stackexchange-Site für Codeüberprüfungen? Vielleicht dort nachfragen?

verwandte Informationen