echo输出颜色字体&shell函数传参$1$2

字体颜色部分

诸如xterm,rxvt,PuTTY的通用终端仿真器以及UNIX /Linux桌面环境的默认终端仿真器均支持基于转义序列的文本颜色和形状处理。(例如,警告消息的红色或闪烁文本或状态消息的其他颜色)。

- 实现过程:
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
- 书写格式:

echo -e +开头部分:\033[前景色;背景色;显示方式m + 输出内容 + 结尾部分:\033[0m

  • 注意:
    -e 是用来开启echo中的转义。
    开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。
    结尾部分,代表回归默然字符颜色,不写会影响后面输入内容的颜色,建议\033[***m开头,\033[0m结尾。

#实例演示:

$ echo -e '\033[42;37;1mThis is print\033[0m'

意思是输出背景色为42绿、文字是37白、1代表高亮度的,m是分割标志,“This is print”是待输出的内容。

  • 为啥字符串[42;37;1m前还要加个\33呢,这就涉及到另一知识点:
    escape序列这是一个相当古老的ANSI标准,基本所有的Unix/Linux terminal都支持escape序列。escape序列以八进制 \033 即 ESC 的ASCII码开头,主要用来控制字体的颜色和其他特征如闪烁,下划线等。
  • 我们知道了字符串颜色就是由这一串\033[42;37;1m控制的
    为啥字符串后边还要加一个\033[0m呢?因为\033[42;37;1m只把输出字符串变成了这个颜色,并没有变回去,\033[0m相当于初始化了,让变色的影响只限于此。
  • 如果不变回去会导致后面的输出内容沿用这个颜色,例如下边这个脚本colourtest.sh,执行它,会输出两个“背景色为42绿、文字是37白、1代表高亮度的”字符串。甚至执行完后的指令输入框背景色也会显示成绿色。。。
$ [root@halamadrid]# cat colourtest1.sh 
#!/bin/bashe
echo -e '\033[42;37;1mThis is print'
echo 'hello world!'

附颜色参数对照: 背景色:0 透明(使用终端颜色), 40 黑, 41 红, 42 绿, 43 黄, 44 蓝 45 紫, 46 青绿,47白(灰)
前景色: 30 黑 31 红, 32绿, 33 黄, 34 蓝, 35 紫, 36 青绿, 37 白(灰)
高亮度:高亮是1,不高亮是0。注意m后面紧跟字符串。



函数传参部分

函数的写法及$ 1、$ 2、$ #、$ @($和参数间不带空格)

$ [root@halamadrid]# cat colourtest2.sh 
#!/bin/bash
xmessage()
{
        echo -e "\033[1;$1;$2m$3\033[0m"
        echo -e "$1""\n$2""\n$3""\n$#""\n$@"

}
xmessage 42 37 "hello world"

$ [root@halamadrid]# ./colourtest2.sh nice goal  
hello world    #此行脑补绿底白字
42
37
hello world
3
42 37 hello world

函数里面的$ 1不是输入的第一个参数,而是调用函数时传入的第一个参数。$ #是传入的参数个数,$ @则是所有的传入参数。

参考资源:
函数传参$1$2
echo输出颜色字体

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值