当前位置:  技术问答>linux和unix

shell中如何实现进度条功能?(只有10分了,对大家不住了~~)

    来源: 互联网  发布时间:2015-11-21

    本文导语:  我用的是bsh。 写了一个bsh的脚本,功能是安装某软件。 该软件的安装有多个阶段,希望达到下面的效果: ---------------开始安装--------------- 第一阶段 >>>>>>>>>>>>>>> 成功! 第二阶段 >>>>>>=========  某一阶段开始的时...

我用的是bsh。

写了一个bsh的脚本,功能是安装某软件。
该软件的安装有多个阶段,希望达到下面的效果:

---------------开始安装---------------
第一阶段 >>>>>>>>>>>>>>> 成功!
第二阶段 >>>>>>========= 

某一阶段开始的时候,进度条显示的是 ==============,然后不断由 “>” 代替 “=”。
这个过程是可以循环的,即进度变成>>>>>>>>>>>>>后,如果该阶段没有完成,则又变回 ==============,如此循环,直到该阶段安装完成,显示“成功!”再进入下一阶段的安装。

或者达到这样的效果也行:
---------------开始安装---------------
第一阶段 --------------- 成功!
第二阶段 --------------- / (|/-|的循环)

类似于linux引导时那个转动的小棍,直到阶段安装完成,显示成功。


这两种方式感觉实现起来原理应该差不多。

但是不知道怎么实现,莫非要用到多线程(shell有多线程?)

在bsh中如何实现呢?

|
10分就只有程序,没有说明:
#!/usr/local/bin/bash

set -m
sleep 10 & # replace wit your installation program step #1
S_PID=`jobs -p | tail -1`
PROGRESS=1
while [ "`ps -p $S_PID | wc -l`" -ne "1" ] ; do
        CH='>'
        BAR=
        for IDX in `jot 20`; do
                if [ $IDX -eq $PROGRESS ] ; then
                        CH='='
                fi
                BAR=$BAR$CH
        done
        printf "Stage #1 $BARr"
        PROGRESS=`expr $PROGRESS + 1`
        if [ $PROGRESS -gt 20 ] ; then
                PROGRESS=1
        fi
        sleep 1
done &

W_PID=`jobs -p | tail -1`
wait $S_PID

|
10分。。。呵呵,给你个例子吧。
for i in 0 10 20 30 40 50 60 70 80 90 100
do
  echo $i
  sleep 1
done | dialog --title "Install" --backtitle "MySoft" --gauge "Please waiting..." 10 60

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Shell中是不是只有“空串”没有NULL?
  • 如何使用shell命令取到本机ip,注意只有本机ip的字符串 ,比如“xxx.xxx.xxx.xxx”
  • 请问如何通过shell脚本判断本机是否已经连通某个主机。只有连通后才走下一步?
  • 如何保证 shell 程序只有单一instance运行?
  • 急!请教高手:在Solaris系统中,对于远程telnet方式,发现只有root用户登录成功,其他用户不能登录,报no shell错误,是什么原因?
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3