パイプでbash関数を出力する[閉じる]

パイプでbash関数を出力する[閉じる]

出力を美しくするためにbash関数を作成しましたsvn。この関数は、コミットごとに1行だけ記録されることを示します。本当に良いです!気に入っていますが、パイプと一緒に使用すると動作しません。以下で見つけることができます:github svn美化

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

...コードレビュー専用のStackexchangeサイトはありませんか?そこに行って尋ねてもいいですか?

関連情報