shell进度条

shell中打印进度条,需要用到tput、printf函数。

# tput row col  光标移到第row行第col列

# tput cols 获取窗口最大列数

# tput lines 获取窗口最大行书

# echo $LINENO  获取光标当前行号

function getprostr(){        pchar=$1        ptotal=$2        outstr=""

        numcol=`tput cols`        coltotal=$[$numcol/2/$ptotal]

        for((i=1;i<=$coltotal;i++));        do                outstr="$outstr$pchar";        done        echo $outstr}function progressHead(){        outstr=""        ptotal=$1        row=$2

        str=`getprostr "-" $1`        for((i=1;i<=$ptotal;i++));        do                outstr="$outstr$str";        done        tput cup $row 0        echo "$outstr-"}function progress(){        tput sc

        pvalue=$1        ptotal=$2        row=$3        numcol=`tput cols`

        gstr=`getprostr "=" $ptotal`        str="$gstr>"        if [ $pvalue == $ptotal ]; then                str="$gstr="        fi

        barcol=$[($pvalue-1)*(${#str}-1)]        percent=$[$pvalue*100/ptotal]

        tput cup $row $barcol        echo "$str"        tput cup $row $[$numcol/2]        echo "[$percent%]"

        tput rc}

clearcols=`tput cols`rows=`tput lines`curline=$LINENO

progressHead 5 $[$LINENO-$curline-2]progressrow=$[$LINENO-$curline-2]#echo ""progressHead 5 $[$LINENO-$curline-3]

progress 1 5 $progressrowsleep 1progress 2 5 $progressrowsleep 1progress 3 5 $progressrowsleep 1progress 4 5 $progressrowsleep 1progress 5 5 $progressrow

输出结果:

-----------------------------------------

========================================[100%]

-----------------------------------------

时间: 2024-10-07 05:30:00

shell进度条的相关文章

shell脚本的简易进度条

一.简易进度条的基础 1.数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小.类似于C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其 值应大于或等于0. 定义数组:在Shell中,用括号来表示数组,数组元素用"空格"符号分割开. 读取数组元素值的一般格式是:${array_name[index]}. 读取数组元素所有值的一般格式是:${array_name[*]}或者${array_name[@]}. 求取数组的长度:${

shell脚本实现进度条

使用shell脚本来实现进度条 代码如下: 运行结果为:

BASH Shell 简易进度条小函数

不多说,直接上脚本. # processbar <current> <total> processbar() { local current=$1; local total=$2; local maxlen=80; local barlen=66; local perclen=14; local format="%-${barlen}s%$((maxlen-barlen))s" local perc="[$current/$total]" l

shell脚本,如何写进度条。

[[email protected] ~]# cat jindutiao.sh #!/bin/bash #进度条 n=$((100/10)) N=$((100/20)) for i in `seq 500` do sleep 0.01 [ $(($i%$n)) -eq 0 ] && echo -ne "\b=" && continue [ $(($i%$N)) -eq 0 ] && echo -ne "-" done

进度条——shell脚本实现

进度条在以后开发,测试,运维中,可实现自动化检查项目的更新.运行等情况,大大加快工作效率. 1.代码实现   1 #!/bin/bash   2 function proc()   3 {   4     count=0   5     bar=""   6     lable=("|" "/" "-" "\\")   7     while [ $count -le 100 ]   8     do   

shell下的进度条和最大最小平均值

进度条 C语言下的进度条参考我原来的一篇blog->进度条 function proc() {      i=0       str=''      arr=('|' '/' '-' '\\')      index=0      while [ $i -le 100 ]      do          printf "[%-101s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}"

ProgressIndicator显示进度条以及一些文字信息

//ProgressIndicator可以显示进度条以及一些文字信息,不过这个属性一般都在cs文件中操作. private void PhoneApplicationPage_Loaded(object sender, System.Windows.RoutedEventArgs e) {     private Microsoft.Phone.Shell.ProgressIndicator _progressIndicator = new Microsoft.Phone.Shell.Progr

Linux中的小程序—— 进度条

在说正事之前,首先科普一下在什么是回车什么是换行? 我们通常所说的回车就是从一行的末尾跳到另一行的开头,但事实上这却是由回车和换行两个动作所完成的,也就是键盘上<enter>所完成的工作.但实际上,回车是光标重回开头,换行就仅仅只是光标往下一行.(回车\r,r为return:换行\n,n为newline) 对于一个shell中运行的程序,默认情况下printf()是行缓冲的.意思是printf输出时是先将内容输送到缓冲区,再从缓冲区输送到屏幕上.当写入的字符中含有换行符\n时,缓冲区就会立马把

Chromium中网页加载进度条研究

1.     Shell.java中有成员变量:mProgressDrawable. 该成员变量在方法:onFinishInflate中被初始化. 在该类中有方法:onLoadProgressChanged,该方法中对进度条的值进行改变,并且对刷新完成事件进行反馈. 2.     上面的这个方法是在cc文件中被调用的. 上面方法对应的cc方法是shell_android.cc文件中的LoadProgressChanged方法. voidShell::LoadProgressChanged(Web