bash上的双缓冲区

时间:2012-11-30 21:02:55

标签: bash

我有一个每N秒循环打印信息的脚本

function exit_loop
{
    tput rmcup
    tput cnorm
    exit 0
}

function main_loop
{
    tput smcup
    tput civis

    trap exit_loop SIGINT

    while [ true ]; do
        sleep $DELAY &
        clear
        # do things and print
        wait
    done
}

以前的工作很好但是当脚本打印在refesh之间很难看时,存在某种双缓冲。

注意

我的脚本使用echo -eprintf句子

在输出中使用颜色

1 个答案:

答案 0 :(得分:0)

最接近双缓冲区的是rici的答案:将所有# do things and print内容输出重定向到临时文件,清除屏幕之前;然后清除屏幕并捕捉临时文件。

或者您可以将光标移动到屏幕顶部而不清除它,然后覆盖那里的光标。但是,您有责任清除延伸到新文本末尾的任何剩余旧文本。