如何显示和动态更新多行结果

如何显示和动态更新多行结果

我有一个脚本,它会重复计算文件中的行数并显示该数字,并通过不断用回车符覆盖以前的值来动态更新它。

echo "Checking in progress:"
while true ; do
    outcount=$(cat /tmp/curl-check-result.txt | wc -l)
    echo -ne "Total checked IPs:" '\t'`cat /tmp/curl-check-result.txt | wc -l`'\r'
    if [[ $outcount -eq $numips ]]; then
        break
    fi
done

但我想同时对另外两个文件做类似的事情。像这样的东西:

计数文件1:数数
计数文件2:数数
计数文件3:数数

当我尝试在一个脚本中添加类似的代码部分时,输出行会相互覆盖。我怎样才能做到这一点?

答案1

man tput查看您是否可以提供带有可选参数的“capname”。

man terminfo (5)看看“capname”有什么可用的,有很多功能。

以下是如何执行此操作的演示:

while true; do
    var1=$((var1+1))
    var2=$((var2+2))
    var3=$((var3+3))

    printf "%s\n%s\n%s\n" "$var1" "$var2" "$var3"
    [ $var1 -ge 100 ] && break

    sleep 0.1
    # move the cursor up 3 lines
    tput cuu 3
    # clear to the end of screen
    tput ed
done

相关内容