使用例

$ diff `pr_sbs echo hoge` `pr_sbs echo fuga`
1c1
< hoge
---
> fuga

書き込みの場合

$ echo hoge | tee `pr_sbs -w wc -l \> test`
hoge
$ cat test
1

エスケープがいる場合

$ echo hoge | tee `pr_sbs -w cat \| awk \''{print $1" "$1}'\' \> test`
hoge
$ cat test
hoge hoge

コード

pr_sbs
#!/bin/dash

case "$1" in
'-r') r_flg=true
      shift      ;;
'-w') r_flg=false
      shift      ;;
*)    r_flg=true ;;
esac

f=/dev/shm/pr_sbs.$$
rm -f $f
mkfifo $f
echo $f

exec >&-
{
  if $r_flg
  then eval "$@" > $f
  else eval "$@" < $f
  fi

  rm -f $f
} &

標準出力を閉じないとコマンド置換が突き放し処理を待ってハングする。
仕組み上標準出力はできない。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.