shell脚本实现彩色进度条的编写

编程入门 行业动态 更新时间:2024-10-09 09:21:08

shell<a href=https://www.elefans.com/category/jswz/34/1771291.html style=脚本实现彩色进度条的编写"/>

shell脚本实现彩色进度条的编写

我们在之前写过c/c++实现的进度条,原理相同,这里主要着重于彩色进度条的实现

这里只是一个带颜色的进度条,主要是让我们知道颜色如歌设置
代码:

#!/bin/bash
function bar(){
str=''
i=0
j=0
arr=('|' '/' '-' '\')while [ $i -le 100 ]
doj=ilet j%=4str=#${str}printf "[\33[47;34m%-100s\33[0m][%d%%][\33[41;30m%c\33[0m]\r" "$str" "$i" "${arr[$j]}"let j%=4let i++sleep 0.2
done
echo
}
function main(){bar
}main

结果图:

首先来了解一下如何设置终端的字符颜色:

终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符’ESC’开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通由‘\033[’或‘\e[’代替。
通过转义序列设置终端显示属性时,可采用以下格式:

\033[ Param {;Param;…}m 或 \e[ Param {;Param;…}m 

其中,‘\033[’或‘\e[’引导转义序列,‘m’表示设置属性并结束转义序列。Param为属性值,{…}表示可选(多个参数之间用分号隔开,与顺序无关)。

转义序列相关的常用参数如下(通过man console_codes命令可查看更多的参数描述):

  • 显示: 0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)
  • 颜色: 0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(洋红)、6(青)、7(白)

前景色为30+颜色值,如31表示前景色为红色;背景色为40+颜色值,如41表示背景色为红色。

设置格式:
\033[显示方式;前景色;背景色m输出字符串\033[0m 或
\e[显示方式;前景色;背景色m输出字符串\033[0m

实现彩色进度条
代码:

#!/bin/bash
function bar(){
num=0
str=''
max=100
pro=('|' '/' '-' '\')while [ $num -le $max ]
dolet color=30+num%8echo -en "\e[1;"$color"m"let index%=4str=#${str}printf "[%-100s][%d%%][%c]\r" "$str" "$num" "${pro[$index]}"let num++sleep 0.1
done
echo
}function main(){bar
}main

结果图:

这是因为界面太小的原因,一行显示不了100个字符,若减小个数(进度),图形如下

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e ,-n表示不换行
echo -e “\033[字背景颜色;文字颜色m字符串\033[0m”
注:
  1、字背景颜色和文字颜色之间是英文的””
  2、文字颜色后面有个m
  3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
其中m取值:

更多推荐

shell脚本实现彩色进度条的编写

本文发布于:2024-03-15 08:47:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738512.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:脚本   进度条   彩色   shell

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!