在监视调用中使用多个tee命令重定向

问题描述 投票:1回答:1

以下命令通过使用tee处理管道的输出两次:

echo -e "ALPHA\nBRAVO" | tee >(head -n 1) >(tail) >/dev/null

如预期的那样输出:

ALPHA
ALPHA
BRAVO

[尝试用这样的手表打电话时:

watch 'echo -e "ALPHA\nBRAVO" | tee >(head -n 1) >(tail) >/dev/null'

返回:

sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `echo -e "ALPHA\nBRAVO" | tee >(head -n 1) >(tail) >/dev/null'

我应该如何逃避将其与watch一起使用的命令?

bash watch tee
1个回答
1
投票

进程替换是扩展,并非所有sh实现都支持它们。您可以使用重定向来规避此限制。喜欢

watch '{ { { printf '\''ALPHA\nBRAVO\n'\'' | tee /proc/self/fd/3
           } | head -n 1 >&4
         } 3>&1 | tail >&4
       } 4>&1'
© www.soinside.com 2019 - 2024. All rights reserved.