即时刷新较少

即时刷新较少

我正在编写一个脚本,其中将函数的输出传递给less,等待一段时间,然后杀死less。所有这些都在循环内完成。这使得它看起来像是less动态更新的。这是我的脚本:

#!/usr/bin/env bash

for i in {0..5}; do
    echo $i | less -c &
    pid=$!
    sleep 2
    kill $pid &>/dev/null
done

这按预期工作,但此后终端变得无响应(例如击键不可见)。我究竟做错了什么?

编辑:好吧,我认为我问问题的方式令人困惑。我正在尝试编写一个脚本,根据音乐播放器中当前的歌曲从网站上删除歌词。我想要的方式是,让这个脚本在屏幕会话中运行,并且我希望它每 30 秒左右自动更新一次。最终的脚本看起来像这样:

function get_lyrics()
{
    # function which gets the lyrics based on current song
}

while true; do
    song=$(get_lyrics)
    echo "$song" | less -c &
    pid=$!
    sleep 30
    kill $pid &>/dev/null
done

答案1

创建一个脚本文件并将以下内容放入其中。它将把歌词写在文件上/tmp/lyrics

while true; do
    get_lyrics >/tmp/lyrics
    sleep 30
done

现在,在后台发送该脚本并发出以下命令,这将完成您想要做的事情,但以更干净的方式。

watch -n 30 less -c /tmp/lyrics

相关内容