Вывод функции bash в канал

Вывод функции bash в канал

Я сделал функцию bash для украшения svnвывода, эта функция показывает логи по одной строке на коммит, это здорово! Мне нравится, но если я использую ее с конвейером, она не работает. Вы можете найти ее на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

было бы неплохо, если бы я мог использовать его с | grep.

решение1

У вас есть это:

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

Это [ ! -t 1 ]тест заставляет вашу функцию возвращаться слишком рано. Когда вы передаете свою функцию в канал, stdout (файловый дескриптор 1)неттерминал.

решение2

Это определенно не общая проблема функций bash с каналами.

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

...разве нет специального сайта Stackexchange для codereview? Может там спросить?

Связанный контент