不刷屏幕输出

动态不刷屏幕输出 python/shell 实现

杀马特。学长 韩版系。学妹 提交于 2019-12-05 20:43:48
后台运行程序有一种需求,比如查看当前进度,想在终端看到某个值的变化情况: 先提供一种很土的办法,把进度落地文件为 例如 process,采用创建写的方式。然后可以使用watch -n 1 cat process来查看进度。 这里提供两种方式,python和shell shell版本,如下(附带一个进度条的例子) #! /bin/bash for ((i=0; $i<=100; i+=1)) do printf "progress: [%-100s] %d%%\r" "xxxxxxxxxx xxx xxx" $i sleep 1 done function sleepPrograss(){ [ $# -eq 0 ] && echo "sleepPrograss Usage: sleepPrograss 10 " [ $# -eq 0 ] && return 1 allTime=$1 strDone='' stepTime=$(echo "scale=1; $allTime/100" | bc) for ((i=0; $i<=100; i+=1)) do printf "progress: [%-100s] %d%%\r" $strDone $i sleep $stepTime strDone+='#' done echo } python版本,如下(附一个多线程输出进度的例子)