bash 関数の出力をパイプに送る

bash 関数の出力をパイプに送る

出力を美しくするbash関数を作りましたsvn。この関数はコミットごとに1行のログを表示します。素晴らしいです!気に入っていますが、パイプで使用すると動作しません。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 サイトはありませんか? そこで聞いてみてはいかがでしょうか?

関連情報