我有以下的输出。
artist - song name
artist - song name
artist - song name
当一首歌结束时,程序会在新的一行中打印下一个艺术家和歌曲名称.我想以某种方式管道输出,并只保存最新的条目到文件中,当有新的条目时,它会覆盖文件。
在bash中使用简单的管子就可以实现吗?还是我必须要写一些包装脚本来实现?
让我们模拟一个程序,它每隔几秒钟用shell函数打印一个新的艺术家歌曲名称。
printsong() {
local i=0
while :; do
echo "artist - song $((++i))"
sleep 3
done
}
现在,我们从这个函数中读取数据 每当有新的行时,就覆盖一个文件。
printsong | while IFS= read -r song; do echo "$song" > output; done
output
现在将总是包含最新的一行输出从 printsong
.