shell自定义日志输出函数log

news2024/9/17 8:25:58

Background

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

源码 log.sh

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

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://www.coloradmin.cn/o/1480833.html

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

相关文章

使用Python操作SQLite数据库

大家好,在数据涌现的今天,数据库已成为生活中不可或缺的工具。Python作为一种流行的编程语言,内置了多种用于操作数据库的库,其中之一就是SQLite。SQLite是一种轻量级的关系型数据库管理系统,它在Python中的应用非常广…

c++异常机制(6) -- 标准库中的异常类

标准程序库异常 我们使用c标准库中的异常类&#xff0c;来实现我们之前文件拷贝的代码。 #include <iostream> #include <stdlib.h> #include <exception> #include <ios>using namespace std;#define BUFFER_SIZE 1024// 将一个文件中的内容拷贝到另…

python中版本,操作系统等问题汇总

1. linux源码部署到windows 1.1ModuleNotFoundError: No module named pwd 这个问题&#xff0c;是因为源码是给linux的。这里在windows中&#xff0c;没有该命令。 解决方法之一&#xff0c;在相应的环境目录中&#xff0c;如图中<MetaGPTenv>虚拟环境中&#xff0c;在…

makefileGDB使用

一、makefile 1、make && makefile makefile带来的好处就是——自动化编译&#xff0c;一旦写好&#xff0c;只需要一个make命令&#xff0c;整个工程完全自动编译&#xff0c;极大的提高了软件开发的效率 下面我们通过如下示例来进一步体会它们的作用&#xff1a; ①…

今日arXiv最热大模型论文:点击即可播放!港中文发布大模型写歌神器!

一首歌&#xff0c;包含作词作曲两个部分。擅长作词or作曲就已经很牛了。比如方文山是周杰伦的御用作词人&#xff0c;而周杰伦写过很多耳熟能详的曲子。而兼具作词作曲才华的全能创作人却是难得一见。 最近港中文发布了一款歌曲创作大模型SongComposer&#xff0c;作词作曲都…

Pegasus智能家居套件样例开发--软定时器

样例简介 此样例将演示如何在Pegasus Wi-Fi IoT智能家居套件上使用cmsis 2.0 接口进行定时器开发。 工程版本 系统版本/API版本&#xff1a;OpenHarmony 3.0 releaseIDE版本&#xff1a;DevEco Device Tool Release 3.0.0.401 快速上手 准备硬件环境 预装windows系统的PC…

uniapp项目申请短信模板临时Nginx配置

现在申请短信模板不允许有变量&#xff0c;且要指向实际业务网站&#xff0c;因为项目是小程序&#xff0c;用uniapp写的&#xff0c;现在申请短信&#xff0c;把uniapp打包成h5项目&#xff0c;上传至服务器&#xff0c;修改niginx配置中springboot项目部分&#xff0c;记录一…

Netty之ChannelHandlerMask详解

Netty的ChannelHandlerMask是用于标记ChannelHandler的位掩码。它被用于指示ChannelHandler的事件处理方式。ChannelHandlerMask 定义了ChannelHandler所有事件。 final class ChannelHandlerMask {static final int MASK_EXCEPTION_CAUGHT 1;static final int MASK_CHANNEL_…

前端src中图片img标签资源的几种写法?

在 Vue 项目中引用图片路径有几种不同的方法&#xff0c;具体取决于你的项目结构和配置。以下是几种常见的方式&#xff1a; 1. 静态资源目录 (Public) 如果你的图片放在了项目的 public 目录下&#xff08;例如&#xff0c;Vite 和 Create Vue App 脚手架工具通常使用这个目…

关于页面置换算法的例题(2)

考虑一个500字的程序的下述逻辑地址访问序列&#xff1a;10&#xff0c;11&#xff0c;104&#xff0c;170&#xff0c;73&#xff0c;309&#xff0c;185&#xff0c;245&#xff0c;246&#xff0c;434&#xff0c;458&#xff0c;364。假定采用页式虚拟内存管理&#xff0c;…

力扣hot100题解(python版41-43题)

41、二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例…

理解C#里面的集合有哪些?怎么用,什么是安全集合?

介绍 在C#中&#xff0c;集合是一种用于存储和操作多个元素的数据结构。它们提供了各种操作&#xff0c;如添加、删除、查找等&#xff0c;以及遍历集合中的元素。集合通常根据其实现方式和行为特征进行分类。 集合继承IEnumerable 在C#中&#xff0c;几乎所有的集合类型都实现…

uniapp同步将本地图片转换为base64,支持微信、H5、APP

接上篇&#xff0c;少了一个方法的源代码。 先上代码&#xff1a; ploadFilePromiseSync (url) > { return new Promise((resolve, reject) > { // #ifdef MP-WEIXIN uni.getFileSystemManager().readFile({ filePath: url, encoding: base64, success: res > { let …

TVM 和模型优化的概述(1)

文章目录 1. 从 Tensorflow、PyTorch 或 Onnx 等框架导入模型&#xff08;model&#xff09;。2.翻译成 Relay3. lower 到 张量表达式。4. 使用 auto-tuning 模块 AutoTVM 或 AutoScheduler 搜索最佳 schedule。5. 选择最佳配置进行模型编译。6. lower 到 TIR。7. 编译成机器码…

【JavaScript】面试手撕节流

引入 上篇我们讲了防抖&#xff0c;这篇我们就谈谈防抖的好兄弟 – 节流。这里在老生常谈般的提一下他们两者之间的区别,顺带给读者巩固下。 PS: 开源节流中节流与这个技术上的节流&#xff0c;个人认为本质上是一样的。 开源节流的节流指的是节省公司的金钱开支。前端技术上的…

#stm学习总结 (二十八)硬件随机数实验

28.1 随机数发生器简介 STM32F407 自带了硬件随机数发生器&#xff08;RNG&#xff09;&#xff0c;RNG 处理器是一个以连续模拟噪声为基础的随机数发生器&#xff0c;在主机读数时提供一个 32 位的随机数。 28.1.1 RNG 框图 STM32F407 的随机数发生器&#xff08;RNG&#x…

Python实现双向链表:从基础到应用

一、引言 双向链表是一种比单向链表更复杂的数据结构&#xff0c;每个节点除了包含数据和指向下一个节点的指针外&#xff0c;还包含一个指向前一个节点的指针。这种结构使得我们可以从链表的任何节点开始&#xff0c;向前或向后遍历链表。 目录 一、引言 二、节点定义 三、…

谷歌最强开源大模型亮相!Gemini技术下放,笔记本就能跑,可商用

明敏 发自 凹非寺 量子位 | 公众号 QbitAI 谷歌大模型&#xff0c;开源了&#xff01; 一夜之间&#xff0c;Gemma系列正式上线&#xff0c;全面对外开放。 它采用Gemini同款技术架构&#xff0c;主打开源和轻量级&#xff0c;免费可用、模型权重开源、允许商用&#xff0c;…

C++ STL:set/multiset、map/multimap源码剖析

C STL中set和map底层数据结构为红黑树rb_tree。具体可以参考这篇文章。 ​​​​​​C STL &#xff1a;红黑树rb_tree源码剖析-CSDN博客 set插入时插的就是key&#xff0c; map插入时插的是value(键值对)&#xff0c; 排序时底层的红黑树会根据key_compare(也就是模版…

[回归指标]R2、PCC(Pearson’s r )

R2相关系数 R2相关系数很熟悉了&#xff0c;就不具体解释了。 皮尔逊相关系数&#xff08;PCC&#xff09; 皮尔逊相关系数是研究变量之间线性相关程度的量&#xff0c;R方和PCC是不同的指标。R方衡量x和y的接近程度&#xff0c;PCC衡量的是x和y的变化趋势是否相同。R方是不…