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://www.rhkb.cn/news/266660.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H3C防火墙安全授权导入

一、防火墙授权概述 前面我们已经了解了一些防火墙的基本概念,有讲过防火墙除了一些基本功能,还有一些高级安全防护,但是这些功能需要另外独立授权,不影响基本使用。这里以H3C防火墙为例进行大概了解下。 正常情况下,防…

react路由基础

1.目录 A. 能够说出React路由的作用 B. 能够掌握react-router-dom的基本使用 C. 能够使用编程式导航跳转路由 D. 能够知道React路由的匹配模式 2.目录 A. React路由介绍 B. 路由的基本使用 C. 路由的执行过程 D. 编程式导航 E. 默认路由 F. 匹配模式 3.react路由介绍 现代…

在实训云平台上配置云主机

文章目录 零、学习目标一、实训云升级二、实训云登录(一)登录实训云(二)切换界面语言(三)规划云主机实例 三、创建网络三、创建路由器2024-2-29更新到此四、添加接口五、创建端口六、添加安全组规则七、创建…

[设计模式Java实现附plantuml源码~行为型]算法的封装与切换——策略模式

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

中国社会科学院大学与美国杜兰大学金融管理硕士项目——跨越国际的智慧碰撞

在当今经济高度全球化的时代背景下,跨国合作和交流变得日益重要。为了满足全球化时代对金融行业高素质人才的需求,中国社会科学院与美杜兰大学联合推出了金融管理硕士项目,旨为学生们提供一个跨越国际的智慧碰撞的学习机会。 今年是你工作的第…

vue3使用echarts绘制地图

vue3使用echarts绘制地图 安装echarts npm install echarts下载地图的json数据【我这里是把json数据单独粘出来然后新建了一个文件china.json】 下载中国及各个省份的地图数据引入 import chinaJson from ./china.json绘制地图 <template><div ref"myChart&q…

租房招聘平台新篇章:Java+SpringBoot技术革新

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

代码随想录算法刷题训练营day28:LeetCode(93)复原IP地址 、LeetCode(78)子集 、LeetCode(90)子集II

代码随想录算法刷题训练营day28&#xff1a;LeetCode(93)复原IP地址 、LeetCode(78)子集 、LeetCode(90)子集II LeetCode(93)复原IP地址 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;class Solu…

MSSQL渗透测试

目录 mssql数据库连接提权至服务器权限 拿到目标的IP地址&#xff0c;我们先对IP地址进行信息收集&#xff0c;收集信息资产&#xff0c;同时使用nmap对IP地址进行扫描 nmap -sC -sV IP从扫描的结果中&#xff0c;我们能知道目标服务器是windows操作系统&#xff0c;使用的是m…

金仕达与 DolphinDB 建立深度合作,共筑 FICC 科技创新新篇章

从“关起门做交易”到“打开门做服务”&#xff0c;国内 FICC 业务正经历从自营到市场化服务的转变&#xff0c;借助数据分析、算法交易等技术的快速发展&#xff0c;交易团队能够更加主动地发现市场需求&#xff0c;为不同客群提供更好的做市业务&#xff0c;FICC 交易电子化已…

奇安信发布《2024人工智能安全报告》,AI深度伪造欺诈激增30倍

2024年2月29日&#xff0c;奇安信集团对外发布《2024人工智能安全报告》&#xff08;以下简称《报告》&#xff09;。《报告》认为&#xff0c;人工智能技术的恶意使用将快速增长&#xff0c;在政治安全、网络安全、物理安全和军事安全等方面构成严重威胁。 《报告》揭示了基于…

电子科技大学课程《计算机网络系统》(持续更新)

前言 本校的课程课时有所缩减&#xff0c;因此可能出现与你学习的课程有所减少的情况&#xff0c;因此对其他学校的同学更多的作为参考作用。本文章适合学生的期中期末考试&#xff0c;以及想要考研电子科技大学的同学&#xff0c;电子科技大学同学请先看附言。 第一章 计算…

学习阶段单片机买esp32还是stm32?

学习阶段单片机买esp32还是stm32? 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「stm32的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xf…

FPGA-VGA成像原理与时序

什么是VGA: VGA, Video Graphics Array。即视频图形阵列,具有分辨率高、显示速率快、颜色丰富等优点。VGA接口不但是CRT显示设备的标准接口,同样也是LCD液晶显示设备的标准接口,具有广泛的应用范围。在FGPA中,常广泛用于图像处理等领域。 VGA 显示器成像原理 在 VGA 标准刚兴…

Java中的时间API:Date、Calendar到Java.time的演变

引言 在软件开发中&#xff0c;处理时间和日期是一项基本且不可或缺的任务。无论是日志记录、用户信息管理还是复杂的定时任务&#xff0c;准确地处理时间都显得至关重要。然而&#xff0c;时间的处理并不像它看起来那么简单&#xff0c;尤其是当我们考虑到时区、夏令时等因素…

递归算法题练习(数的计算、带备忘录的递归、计算函数值)

目录 递归的介绍 递归如何实现 递归和循环的比较 例题: &#xff08;一、斐波那契数列&#xff0c;带备忘录的递归&#xff09; 如果直接使用递归&#xff0c;难以算出结果&#xff0c;需要优化 优化方法&#xff1a;带备忘录的递归 &#xff08;二、数的计算&#xff09…

Python+Selenium+Unittest 之Unittest1--简介

Unittest属于是一种单元测试框架&#xff0c;主要用于对代码中写好的单元内容进行验证&#xff0c;比如写好一个函数&#xff0c;可以使用unittest去进行验证该函数的代码逻辑是否有问题&#xff0c;对于自动化来说&#xff0c;可以去检验每条用例的内容是否符合预期。 Unittes…

ChatGPT在测试计划中的应用策略

测试计划是指描述了要进行的测试活动的范围、方法、资源和进度的文档。它主要包括测试项、被测特性、测试任务和风险控制等。 所以在使用ChatGPT输出结果之前&#xff0c;我们需要先将文档的内容框架梳理好&#xff0c;以及将内容范围划定好&#xff0c;必要的时候&#xff0c…

vue实现自定义树形穿梭框功能

需求&#xff1a; 我们在开发过程中&#xff0c;会遇到需要将一个数据选择做成穿梭框&#xff0c;但是要求穿梭框左侧为树形结构、右侧为无层级结构的数据展示&#xff0c;ElementUI自身无法在穿梭框中添加树形结构&#xff0c;网上搜到了大佬封装的插件但是对于右侧的无树形结…

Socket网络编程(一)——网络通信入门基本概念

目录 网络通信基本概念什么是网络&#xff1f;网络通信的基本架构什么是网络编程?7层网络模型-OSI模型什么是Socket&#xff1f;Socket的作用和组成Socket传输原理Socket与TCP、UDP的关系CS模型(Client-Server Application)报文段牛刀小试&#xff08;TCP消息发送与接收&#…