Linux 行缓冲的并发UART输出

Linux 行缓冲的并发UART输出,linux,concurrency,grep,cat,Linux,Concurrency,Grep,Cat,我有4个UART设备,我想同时观察它们的输出。我使用以下脚本来完成此工作: # first kill the cat process from last run killall -v cat for i in `seq 0 3`; do cat /dev/crbif0rb0c$(i}ttyS0 | grep . --line-buffered & # cat /dev/crbif0rb0c$(i)ttyS0 & done 但是我没有从这个脚本得到任何输出,除了

我有4个UART设备,我想同时观察它们的输出。我使用以下脚本来完成此工作:

# first kill the cat process from last run
killall -v cat

for i in `seq 0 3`; do
    cat /dev/crbif0rb0c$(i}ttyS0 | grep . --line-buffered &
    # cat /dev/crbif0rb0c$(i)ttyS0 &
done
但是我没有从这个脚本得到任何输出,除了许多空行。当我删除
grep
内容并使用for循环中的第二行时,我得到了很多输出,但由于所有输出都被弄乱了,因此不可读

所以我的问题是,为什么在使用grep时没有输出(除了空行)?或者任何人都可以为我的场景提供更好(且可行)的解决方案

提前谢谢


[UPDATE]我突然发现
cat/dev/crbif0rb0c${I}ttyS0 | grep^行缓冲&
可以工作。不知道为什么

tail-f/dev/crbif0rb0c{0,1,2,3}怎么样?

您的UART是否打印CR和/或LFs?因为在他们完成一行之前不会打印输出。他们正在打印“\n”。但没关系,通过在
grep
中将
替换为
^
解决了问题。