saída da função bash para pipe [closed]

1

Eu fiz uma função bash para embelezar svn output, esta função mostra logs de uma linha por commit, é ótimo! Eu gosto, mas se eu usá-lo com tubo não funciona. Você pode encontrá-lo em github svn-beautify

$ 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

seria bom se eu pudesse usá-lo com | grep .

    
por Fabio 27.03.2014 / 22:19

2 respostas

3

Você tem isso:

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

É o teste [ ! -t 1 ] que está causando sua função para retornar muito cedo. Quando você canaliza sua função para um pipe, o stdout (descritor de arquivo 1 ) é não um terminal.

    
por 27.03.2014 / 23:04
0

Isso definitivamente não é um problema geral da função bash-with-pipes.

~$ 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

... não há um site especial Stackexchange para codereview? Talvez pergunte lá?

    
por 27.03.2014 / 23:04