我正在Ubuntu中试验命名管道,但以前没有使用它们的经验。我做了以下事情:
mkfifo pipe
ls>pipe&
cat pipe
这将输入我文件夹中所有文件的列表pipe
并显示它们。我正在尝试一次读取管道2行。因此,我希望在执行一次命令后,将给出文件夹中第一个和第二个文件的名称。如果再次执行该命令,则需要第三个和第四个文件名。有什么办法吗?
我试过了head -2 pipe
。它显示了前两个文件名。但是,当再次执行它时,它挂起了。正确的前进方向是什么?
您想使fifo在阅读侧保持打开状态。一种方法是让bash为其保留一个打开的文件描述符。
#!/bin/bash
mkfifo pipe
ls > pipe &
exec 8< pipe
r2(){
read -ru 8 fn1
read -ru 8 fn2
echo "$fn1" "$fn2"
}
r2 # print out first 2 files
sleep 1 # do something
r2 # print out next 2 files.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句