Linux BASH嵌套进程替换
我试图在while循环中使用进程替换的标准值,如下所示:Linux BASH嵌套进程替换,linux,bash,pipe,named-pipes,process-substitution,Linux,Bash,Pipe,Named Pipes,Process Substitution,我试图在while循环中使用进程替换的标准值,如下所示: #!/bin/bash FILE_1=f1.txt FILE_2=f2.txt while read LINE; do echo "$LINE" done < <(paste <(tail -f "$FILE_1") <(tail -f "$FILE_2")) #/bin/bash 文件_1=f1.txt 文件_2=f2.txt 读行时;做 回音“$LINE” 完成
#!/bin/bash
FILE_1=f1.txt
FILE_2=f2.txt
while read LINE; do
echo "$LINE"
done < <(paste <(tail -f "$FILE_1") <(tail -f "$FILE_2"))
#/bin/bash
文件_1=f1.txt
文件_2=f2.txt
读行时;做
回音“$LINE”
完成<我认为您有两个主要问题。首先,您需要结合使用here字符串、命令替换,以及过程替换,以实现所需的重定向。例如:
while read LINE
do
echo "$LINE"
done <<< "$( paste <( tail -2 "$FILE_1" ) <( tail -2 "$FILE_1" ) )"
读取行时
做
回音“$LINE”
完成当标准输出不是终端时,粘贴将缓冲其输出。您的命令是有效的,在发生任何事情之前,它只需要一定量的输入
要立即获得输出,可以使用stdbuf
取消缓冲stdout:
stdbuf -oL paste <(tail -f "$FILE_1") <(tail -f "$FILE_2") | while read LINE; do...
stdbuf-oL paste@Kashyap No,我正在尝试用重定向进行进程替换。我不确定@Kashyap是什么意思:我找不到任何关于使用@Kashyap的信息,这些文档混在一起了,但这完全是在转移注意力。删除此评论线程将是一个很好的方法。对我来说,听起来像是缓冲。你有没有检查过,它不仅仅是等待你在文件中添加足够多的行数?@thatotherguy:缓冲到底是什么?它应该是从管道中读取数据,对吗?我相信一旦数据可用,读取就会被解锁。只要将两个进程替换作为输入的粘贴命令就可以很好地工作,那么我如何获得标准输出流呢?谢谢,我将研究如何使用这些元素的组合。你能解释一下为什么我尝试的流程替换不起作用吗?只需将两个进程替换作为输入的粘贴命令就可以很好地工作,那么如何获得标准输出流呢?
while read LINE
do
echo "$LINE"
done <<< "$( paste <( tail -2 "$FILE_1" ) <( tail -2 "$FILE_1" ) )"
stdbuf -oL paste <(tail -f "$FILE_1") <(tail -f "$FILE_2") | while read LINE; do...