1 Star 0 Fork 6

谢伟 / pure-bash-bible-zh_CN

forked from bingios / pure-bash-bible-zh_CN 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
进度条.md 1.31 KB
一键复制 编辑 原始数据 按行查看 历史
阿笨猫 提交于 2019-08-24 22:07 . first commit

进度条

# 进度条函数
bar() {
# 用法: bar 1 10
#           ^----- 已经完成的百分比 (0-100).
#             ^--- 字符总长度.
((elapsed=$1*$2/100))

# 创建空格表示的进度条
printf -v prog  "%${elapsed}s"
printf -v total "%$(($2-elapsed))s"

printf '%s\r' "[${prog// /-}${total}]"
}

# 进度条使用示例
for ((i=0;i<=100;i++)); do
    # 纯粹的暂停动作 (为了本例可以更好的演示).
    (:;:) && (:;:) && (:;:) && (:;:) && (:;:)

    # Print the bar.
    bar "$i" "10"
done

printf '\n'
----------

语法说明:

((elapsed=$1*$2/100))

  • (( ))的作用是重定义括号中的变量值,此处是计算已经完成的占总字符的长度;

printf -v prog "%${elapsed}s"

  • "%${elapsed}s"此处%%ns表示指定输出字符串长度,如果不够,空格补全,次数会输出指定个数的空格;
  • printf -v把输出作为一个变量,使用-v var格式。

'%s\r'

  • '\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;
  • '\n' 换行,换到下一行的行首。
其他
1
https://gitee.com/laike23/pure-bash-bible-zh_CN.git
git@gitee.com:laike23/pure-bash-bible-zh_CN.git
laike23
pure-bash-bible-zh_CN
pure-bash-bible-zh_CN
master

搜索帮助