shell 编写一个带有进度条的程序安装脚本

这篇具有很好参考价值的文章主要介绍了shell 编写一个带有进度条的程序安装脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求

使用 shell 写一个 软件安装脚本,带有进度条

示例

#!/bin/bash

# 模拟软件安装的步骤列表
steps=("解压文件" "安装依赖" "配置设置" "复制文件" "")

# 计算总步骤数
total_steps=${#steps[@]}

# 安装进度的初始值
progress=0

# 打印安装进度函数
print_progress() {
    local current_step=$1
    local percentage=$2
    local step=$3

    # 清除当前行
    printf "\r\033[K"

    # 构建进度条字符串
    local progress_bar=$(printf "[%-${total_steps}s] %d%%" "$(yes "#" | head -n $current_step | tr -d '\n')" "$percentage")


    # 打印安装进度
    printf "安装进度: %s %s" "$progress_bar" "$step"
}

# 循环执行每个步骤
for ((i=0; i<total_steps; i++)); do
    step=${steps[$i]}

    # 模拟每个步骤的安装操作
    sleep 1

    # 更新进度
    ((progress = (i+1) * 100 / total_steps))

    # 打印安装进度
    print_progress "$((i+1))" "$progress" "$step"
done

# 打印安装完成消息
printf "\n软件安装完成!\n"

在这个示例中,使用 ANSI 转义序列来实现覆盖原来的打印信息,并保持进度条在同一行显示。通过使用 \r 进行回车,然后使用 \033[K 清除当前行的内容,可以实现覆盖效果。

在 print_progress 函数中,首先清除当前行的内容,然后构建进度条字符串,并使用 \r 实现回车到行首的效果。进度条字符串包含了当前步骤的填充部分和进度百分比。

最后,通过调用 print_progress 函数来打印安装进度,并在安装完成后打印安装完成消息。

细节

local progress_bar=$(printf "[%-${total_steps}s] %d%%" "$(yes "#" | head -n $current_step | tr -d '\n')" "$percentage")
这行如何理解 ?

这行代码是用来构建进度条字符串 progress_bar 的。

逐步解释这行代码的含义:

  1. yes "#" | head -n $current_step:这部分代码使用 yes 命令生成一个无限重复的 # 字符串,并使用 head -n $current_step 命令截取前 $current_step 行。这样就生成了一个由 # 字符构成的字符串,长度为 $current_step

  2. tr -d '\n':这部分代码使用 tr 命令删除字符串中的换行符 \n,即将多行字符串合并为单行。

  3. $percentage:这部分代码是进度百分比的数值。

  4. $(printf "[%-${total_steps}s] %d%%" ...):这部分代码使用 printf 格式化字符串的功能,将 $current_step 行的 # 字符串和进度百分比插入到格式化的字符串中。

具体解释如下:

  • [%-${total_steps}s]:这是一个格式化字符串,表示一个固定长度为 $total_steps 的方括号字符串,其中 -% 表示左对齐,${total_steps}s 表示字符串占位符,用来填充 # 字符。

  • %d%%:这是一个格式化字符串,表示一个整数占位符,用来填充进度百分比的数值,同时后面的 %% 表示打印一个百分号字符 %

最终,progress_bar 字符串的内容类似于 [##### ] 50%,其中 # 的数量和进度百分比随着安装进度的增加而变化。

效果

shell 编写一个带有进度条的程序安装脚本,Linux,shell,进度条文章来源地址https://www.toymoban.com/news/detail-670355.html

到了这里,关于shell 编写一个带有进度条的程序安装脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一篇文章教会你如何编写一个简单的Shell脚本

    Shell脚本概念 Shell 脚本是一种用于自动化执行一系列命令和操作的脚本文件。它使用的是 Shell 解释器(如 Bash、Korn Shell、Zsh 等)来解释和执行其中的命令。Shell 脚本通常用于编写简单的任务和工作流程,可以帮助我们进行系统管理、批量处理、自动化部署等任务。 以.sh后缀

    2024年02月10日
    浏览(50)
  • Linux shell编程学习笔记14:编写和运行第一个shell脚本hello world!

     * 20231020 写这篇博文断断续续花了好几天,为了说明不同shell在执行同一脚本文件时的差别,我分别在csdn提供线上Linux环境 (使用的shell是zsh)和自己的电脑上(使用的shell是bash)做测试。功夫不负有心人,在其中一些实例中可以体现出zsh和bash的对脚本文件支持的差别,收

    2024年02月07日
    浏览(57)
  • 【Linux】编写第一个小程序:进度条

    1.1.1 sleep() 作用:让程序休眠指定秒数,如: sleep(3); //让程序休眠3秒 与 Windows 上的 Sleep() 函数不同 需要包含头文件 unistd.h 1.1.2 fflush() 作用:刷新缓冲区 需要传入一个流 需要包含头文件 stdio.h 1.1.3 usleep() 作用:让程序休眠指定微秒,如: usleep(100000); //让程序休眠100000微秒(

    2024年02月02日
    浏览(38)
  • 如何使用CSS实现一个带有动画效果的进度条?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月11日
    浏览(62)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(75)
  • History命令解释,及一个相关的bash脚本(如何编写脚本程序从记录文件中提取history命令)

    目                录 一、history命令介绍 1、history命令是什么? 2、history的主要功能 二、history命令的用法 1、语法 2、选项说明 3、命令实例 三、history和历史记录文件bash_history 四、history命令的相关配置 1,命令带时间展示-HISTTIMEFORMAT 2,命令行数大小-HISTSIZE 3、设置命令保

    2024年01月23日
    浏览(86)
  • shell脚本简介+编写

    1、常用Linux命令 2、Linux下脚本编写 3、windows下CMD常用命令 1、系统预定义变量 常用系统变量 $HOME 、 $PWD 、 $SHELL 、 $USER 、 $PATH 等。 显示当前所有 Shell 变量: set 2、自定义变量 基本语法 定义变量:变量名=变量值 撤销变量:unset 变量名 声明静态变量:readonly变量,注意:不

    2024年02月02日
    浏览(42)
  • shell 脚本编写

    2023年04月09日
    浏览(36)
  • 简单shell脚本的编写

    shell脚本就是将命令写入文本中,文本可以被执行。 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序,又是一种脚本语言(应用程序 解析 脚本语言)。 简单使用 $0 表示当前

    2024年02月10日
    浏览(41)
  • Linux shell脚本编写

    一、常用shell脚本指令 echo: 输出指定的文本或变量值到标准输出。 read: 从标准输入读取用户输入,并将其保存到指定的变量中。 if: 执行条件语句,如果满足指定条件则执行特定操作,否则执行其他操作。 for: 循环执行特定操作,每次迭代更新变量值。 while: 循环执行

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包