次のコード:
#!/bin/bash -x
mkfifo pipe 2>/dev/null
tee pipe >/dev/null &
cat pipe
次のように実行すると、出力は生成されません。
$ echo "hi" | ./test.sh
+ mkfifo pipe
+ cat pipe
+ tee pipe
$
なぜ?!tee
stdinを名前付きパイプ(および/dev/null
)cat
にコピーしてから、名前付きパイプの内容をstdoutにコピーすることを期待します。なぜ動かないの?!
私はもっと大きなbashスクリプトを書き込もうとしていますが、。tee
の代わりに何か他のものを使用して、そこに本当に必要です/dev/null
。予期しない動作を上記の例に絞り込みました。