shell自定义日志输出函数log

Background

在编写比较复杂的脚本时,需要输出相关日志信息,方便知悉脚本的执行情况以及问题的排查。

源码 log.sh

# 自定义日志函数
function log(){if [[ $1 = "i" || $1 = "info" ]]; thenecho -ne "\033[1;34mINFO: \033[0m"shift && echo -e "$@"elif [[ $1 = "w" || $1 = "warn" ]]; thenecho -ne "\033[1;33mWARN: \033[0m"shift && echo -e "$@"elif [[ $1 = "s" || $1 = "success" ]]; thenecho -ne "\033[1;32mSUCCESS: \033[0m"shift && echo -e "$@"elif [[ $1 = "e" || $1 = "error" ]]; thenecho -ne "\033[1;31mERROR: \033[0m"shift && echo -e "$@"elsecolors=$1input=$2opt='-e'rightpattern='true'if [[ ${colors:0:1} = "n" ]]; thencolors=${colors//n/}opt='-ne'fiif [[ $colors =~ "," ]]; thencolorarr=${colors//,/ }colors=${colors//,/;}for color in ${colorarr[@]};doif ! [[ $color =~ ^[0-9]+$ && $color -gt 0 && $color -lt 49 ]]; thenrightpattern='false'fidoneelseif ! [[ $colors =~ ^[0-9]+$ && $colors -gt 0 && $colors -lt 49 ]]; thenrightpattern='false'fifiif [[ -n $input && $rightpattern = 'true' ]]; thenshift && str="$@"echo $opt "\033[${colors}m${str}\033[0m"elsestr="$@"echo $opt "${str}"fifi
}log $@

使用

  • 输出i-提示、w-告警、s-成功和e-错误信息
sh log.sh i wlf is a coder
sh log.sh w wlf is a coder
sh log.sh s wlf is a coder
sh log.sh e wlf is a coder

在这里插入图片描述

  • 直接输出字符串,和echo功能一样
sh log.sh wlf is a coder
sh log.sh 'wlf is a coder'

在这里插入图片描述

  • 输入参数第一个字符为n则不换行输出,相当于echo -n
sh log.sh nwlf is a coder

在这里插入图片描述

  • 输入字体设置序号设置输出字体
sh log.sh 33 wlf is a coder
sh log.sh n33 wlf is a coder
sh log.sh 333 wlf is a coder

在这里插入图片描述

  • 多种格式英文分号,分隔
sh log.sh 4,33 wlf is a coder
sh log.sh n4,33 wlf is a coder
sh log.sh 4,333 wlf is a coder

在这里插入图片描述

字体设置表

序号设置
0重新设置属性到缺省设置
1设置粗体
2设置一半亮度(模拟彩色显示器的颜色)
4设置下划线(模拟彩色显示器的颜色)
5设置闪烁
7设置反向图象
22设置一般密度
24关闭下划线
25关闭闪烁
27关闭反向图象
30设置黑色前景
31设置红色前景
32设置绿色前景
33设置棕色前景
34设置蓝色前景
35设置紫色前景
36设置青色前景
37设置白色前景
38在缺省的前景颜色上设置下划线
39在缺省的前景颜色上关闭下划线
40设置黑色背景
41设置红色背景
42设置绿色背景
43设置棕色背景
44设置蓝色背景
45设置紫色背景
46设置青色背景
47设置白色背景
49设置缺省黑色背景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2812681.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

前后端联调可能出现的问题

调不到后端数据 前后端传参方式不一样 --- formdata 主要接收文件 或者有文件和数据 --- json 纯数据

java+springmvc+springboot众筹救助系统mybatis

儿童众筹救助系统在流畅性,续航能力,等方方面面都有着很大的优势。这就意味着儿童众筹救助系统的设计可以比其他系统更为出色的能力,可以更高效的完成最新的救助基金、救助申请、众筹项目、捐赠信息等功能。 此系统设计主要采用的是JAVA语言来…

数据结构期末复习试题Ⅱ

应用题 线性表 利用数组array[10](下标从0开始),实现一个循环队列。其中依次存储了a,b,c,d,e,f,g七个数据。front 和 rear 分别保存了该队列的头尾下标,请回答以下问题: 1) 若 front 3,则 rear 的值是多少?请画出此…

Python爬虫中的单线程、多线程问题(文末送书)

前言 在使用爬虫爬取数据的时候,当需要爬取的数据量比较大,且急需很快获取到数据的时候,可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。 一、进程和线程 进程可以理解为是正在运行的程序的实例。进…

SpringMVC 学习(七)之报文信息转换器 HttpMessageConverter

目录 1 HttpMessageConverter 介绍 2 RequestBody 注解 3 ResponseBody 注解 4 RequestEntity 5 ResponseEntity 6 RestController 注解 1 HttpMessageConverter 介绍 HttpMessageConverter 报文信息转换器,将请求报文(如JSON、XML、HTML等&#x…

配置MMDetection的solov2攻略整理

目录 一、MMDetection 特性 常见用法 二、ubuntu20.04配置solov2 三、Windows11配置solov2 一、MMDetection MMDetection是一个用于目标检测的开源框架,由OpenMMLab开发和维护。它提供了丰富的预训练模型和模块,可以用于各种目标检测任务&#xff…

教机械臂搭积木?《多Agent系统引论》第4章 实用推理Agent 小结

4.0 前言 Agent起作用,不仅仅是逻辑推理的一种、一个过程,还有其他过程在起作用。为了建立贴合实际的Agent,我们需要提出一种新的概念的模型。这就是实用推理型Agent。 4.1 推理分两步 这种Agent把推理的过程分为了两步,一步是理…

高纯医用制氧机:医疗领域的重要性与其背后的科技原理

在繁忙的现代医疗环境中,每一个细节都可能关乎生死。高纯医用制氧机,这一看似平常的设备,实则扮演着守护生命的重要角色。那么,它究竟有何魅力,能够在医疗领域占据如此重要的地位?恒业通将为您揭开高纯医用制氧机背后…

写了个动漫搜索引擎小工具

FRE123 - Free Resource for Everyone:老胡信息周刊的衍生项目,核心目的是用技术打破信息差,为每个人提供免费优质资源。 老胡的信息周刊在第三个年头,希望这个系列也能持续更新下去: 网站资源: 01.FRE123|…

VIO第6讲:投影模型与三角化

VIO第6讲:投影模型与三角化 文章目录 VIO第6讲:投影模型与三角化3 三角化3.1 坐标变换与投影模型① 世界系->相机系 X w Y w Z w > > X c Y c Z c X_wY_wZ_w>>X_cY_cZ_c Xw​Yw​Zw​>>Xc​Yc​Zc​② 相机->图像 X c Y c Z c &…

python关于matplotlib的画图工具

#绘制纽约市年均气温 #,months,nyc_temp_2022,months,nyc_temp_2024 from pylab import plot,show #调用画图和显示 nyc_temp_2021 [53.9,56.3,56.4,58.6,57.8,54.9,67.3,56.3,56.7,57.1,67.3,56.3] nyc_temp_2020 [53.9,56.3,56.4,58.6,57.8,54.9,67.3,56.3,56.7,57.1,67.3,56…

jQuery引入及下载方法

jQuery引入及下载方法 目录 jQuery引入及下载方法【方法1】cdn引入【方法2】下载本地文件 【方法1】cdn引入 直接在head引入jq <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>&…

Go Run - Go 语言中的简洁指令

原文&#xff1a;breadchris - 2024.02.21 也许听起来有些傻&#xff0c;但go run是我最喜欢的 Go 语言特性。想要运行你的代码&#xff1f;只需go run main.go。它是如此简单&#xff0c;我可以告诉母亲这个命令&#xff0c;她会立即理解。就像 Go 语言的大部分功能一样&…

FMM 笔记:st-matching(colab上执行)【官方案例解读】

在colab上运行&#xff0c;所以如何在colab上安装fmm&#xff0c;可见FMM 笔记&#xff1a;在colab上执行FMM-CSDN博客 st-matching见论文笔记&#xff1a;Map-Matching for low-sampling-rate GPS trajectories&#xff08;ST-matching&#xff09;-CSDN博客 0 导入库 from…

K8S部署Java项目(Gitlab CI/CD自动化部署终极版)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

formality:set_constant应用

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章链接: formality:形式验证流程 scan mode func的功能检查需要把scan mode设置成0。

Block UI——tree(2)编辑树列表

目录 一、概述 二、学习资料 三、学习案例——编辑树列表 3.1 UI界面分析 3.2编辑树列表方法一 3.3编辑树列表方法二 3.4编辑树列表方法二&#xff08;解决以上问题&#xff09; 三、总结 首先要感谢NX二次开发者无私奉献以及默默无闻的帮助和支持&#xff0c;在这里我推…

解决show-overflow-tooltip跨行生效的问题

当内容出现特殊字符&#xff08;空格换行&#xff09;会占据几行的空间后再显示... 解决&#xff1a; 1、自定义组件tooltip.vue <template><div><el-tooltip :disabled"isShowTooltip" class"tooltip" placement"top"><…

Vmware宿主机与虚拟机网络联通配置

Vmware宿主机与虚拟机网络联通配置 1. 查看宿主机配置 2. 网卡是否启动 更改适配器选项&#xff1a; 网卡全部启用 3. 查看虚拟机IP 虚拟机IP需要与宿主机VMnet8保持网段一致&#xff0c;不一致则进行修改

QQ防红跳转短网址生成网站完整源码

使用此源码可以生成QQ自动跳转到浏览器的短链接&#xff0c;无视QQ报毒&#xff0c;任意网址均可生成。 全新界面&#xff0c;网站背景图采用Bing随机壁纸 支持生成多种短链接 兼容电脑和手机页面 生成网址记录功能&#xff0c;域名黑名单功能 网站后台可管理数据 安装说明&am…