自定义shell工具函数之echo_red()和prepare_check_required_pkg()

两个 bash 函数,echo_redprepare_check_required_pkg,它们在 shell 脚本中使用。下面是每个函数的解释:

echo_red 函数

function echo_red() {echo -e "\033[1;31m$1\033[0m"
}

这个函数的目的是输出红色的文本到终端。它接受一个参数 $1,这是要显示的文本。

  • echo -eecho 是用来打印文本的命令,-e 参数允许解释字符串中的转义序列。
  • "\033[1;31m$1\033[0m":这是一个带有 ANSI 转义序列的字符串,用于改变终端文本的颜色。
    • \033[1;31m:开始一个转义序列,设置文本颜色为红色(1;31)并加粗(1)。
    • $1:是传递给函数的第一个参数,即要打印的文本。
    • \033[0m:结束转义序列,将文本颜色重置回默认值。

prepare_check_required_pkg 函数

function prepare_check_required_pkg() {for i in curl wget tar iptables gettext; docommand -v $i >/dev/null || {echo_red "$i: $(gettext 'command not found, Please install it first') $i"flag=1}doneif [[ -n "$flag" ]]; thenunset flagechoexit 1fi
}

这个函数用于检查系统中是否安装了一些必需的命令行工具。

  • for i in curl wget tar iptables gettext; do:这是一个 for 循环,遍历一个由 curlwgettariptablesgettext 组成的列表。
  • command -v $i >/dev/null:这个命令检查变量 $i 对应的命令是否存在。command -v 会返回命令的路径,如果命令不存在则不返回任何内容。输出被重定向到 /dev/null,这意味着不会在终端显示任何输出。
  • ||:这是一个逻辑 OR 操作符,如果 command -v $i 命令失败(即命令不存在),则执行后面的代码块。
  • { echo_red "$i: $(gettext 'command not found, Please install it first') $i"; flag=1 }:如果命令不存在,则使用 echo_red 函数以红色打印错误消息,并设置 flag 变量为 1
    • gettext 'command not found, Please install it first'gettext 用于国际化和本地化,它会根据系统的语言设置翻译给定的字符串。
  • if [[ -n "$flag" ]]; then:这是一个 if 条件判断,检查变量 flag 是否非空(即前面的循环中是否有命令未找到)。
  • unset flag:如果 flag 非空,则使用 unset 命令删除 flag 变量。
  • echo:打印一个空行以增加输出的可读性。
  • exit 1:退出脚本并返回状态码 1,表示脚本因为错误而终止。

总的来说,prepare_check_required_pkg 函数检查系统是否安装了特定的命令行工具,如果有任何一个工具没有安装,它会打印一条错误消息并退出脚本。

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

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

相关文章

职业规划,软件开发工程师的岗位任职资格

软件工程师是指从事软件开发的人,主要的工作涉及到项目培训和项目设计两个方面。在实际工作中,软件工程师是一个广义的概念,包括了很多与软件相关的人员。除开最基础的编程语言,还有数据库语言等等。从事这份工作,需要…

记录一下uniapp 集成腾讯im特别卡(已解决)

uniapp的项目运行在微信小程序 , 安卓 , ios手机三端 , 之前这个项目集成过im,不过版本太老了,0.x的版本, 现在需要添加客服功能,所以就升级了 由于是二开 , 也为了方便 , 沿用之前的webview嵌套腾讯IM的方案 , 选用uniapp集成ui ,升级之后所有安卓用户反馈点击进去特别卡,几…

【cucumber】学习跟踪

本文章主要跟踪cucumber自动化测试的学习进度,并且统计文章目录: 【cucumber】cluecumber-report-plugin生成测试报告-CSDN博客

openssl3.2 - 官方demo学习 - test - certs - 001 - Primary root: root-cert

文章目录 openssl3.2 - 官方demo学习 - test - certs - 001 - Primary root: root-cert概述笔记官方原版.sh实验自己来分3步走做实验my_openssl_log_001_doc_1.txtmy_openssl_log_001_doc_2.txtmy_openssl_log_001_doc_3.txt备注END openssl3.2 - 官方demo学习 - test - certs …

Java设计模式之观察者模式详解

Java设计模式之观察者模式详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将一同深入探讨Java设计模式之观察者模式,这是一种代…

HR人才测评,如何做技术研发人员基本素质测评?

技术研发人员的基本素质测评,可以从以下几个方面考虑: 1. 技术能力:首要的因素是技术能力,包括编程能力、算法能力、架构设计能力、代码调试和优化能力等。在测评中可以通过技术测试、编程练习、项目经验等方式来考察。 2. 学习…

微前端:一种新型的前端架构方法

微前端是一种新型的前端架构方法,它将单页面应用程序拆分为一系列小型、独立的应用程序。本文将介绍微前端的背景、概念、特点、应用场景和与其他前端架构的对比,以帮助读者更好地理解微前端的概念和实践。 一、引言 随着Web应用程序的复杂性和规模不断…

Java - 深入理解加密解密和签名算法

文章目录 应用的接口安全性问题可能来源加密解密Why保护数据隐私防止未经授权的访问防止数据泄露 对称加密 VS 单向加密 VS 非对称加密一、对称加密二、单向加密(哈希加密)三、非对称加密 常用的对称加密算法1. AES(高级加密标准)…

Django从入门到精通(二)

目录 三、视图 3.1、文件or文件夹 3.2、相对和绝对导入urls 3.3、视图参数requests 3.4、返回值 3.5、响应头 3.6、FBV和CBV FBV 四、静态资源 4.1、静态文件 4.2、媒体文件 五、模板 5.1、寻找html模板 5.2、模板处理的本质 5.3、常见模板语法 5.4、内置模板函…

【DevOps-08-5】目标服务器准备脚本,并基于Harbor的最终部署

一、简要描述 告知目标服务器拉取哪个镜像判断当前服务器是否正在运行容器,停止并删除如果目标服务器已经存在当前镜像,删除当前版本的镜像目标服务器拉取Harbor上的镜像将拉取下来的镜像运行成容器二、准备目标服务器脚本文件 1、在部署的目标服务器准备deploy.sh部署脚本 …

点云从入门到精通技术详解100篇-基于点云和图像融合的智能驾驶目标检测(中)

目录 2.1.2 数据源选型分析 2.2 环境感知系统分析 2.2.1 传感器布置方案分析

对称密码算法有什么优点

对称密码算法是一种加密和解密数据的方法,其中加密和解密使用相同的密钥。这种方法的一个关键特点是加密和解密的速度非常快,因此它在许多需要高速加密的应用中非常有用。 对称密码算法的优点主要在于其效率和安全性。由于加密和解密使用相同的密钥&…

自定义注解与拦截器实现不规范sql拦截(拦截器实现篇)

最近考虑myBatis中sql语句使用规范的问题,如果漏下条件或者写一些不规范语句会对程序性能造成很大影响。最好的方法就是利用代码进行限制,通过拦截器进行sql格式的判断在自测环节就能找到问题。写了个简单情景下的demo,并通过idea插件来将myB…

UE5 Windows打包时报错“SDK Not Found”解决方案

在Unreal Engine 5.0.3 Windows平台下打包时报错:“Windows的SDK未正常安装,而其是生成数据的必需项。请检查主工具栏中“启动“菜单SDK部分来更新SDK。” 解决方案: 1、打开 Visual Studio Installer,点击“修改”按钮&#xf…

EtherNet/IP开发:C++搭建基础模块,EtherNet/IP源代码

这里是CIP资料的协议层级图,讲解协议构造。 ODVA(www.ODVA.org)成立于1995年,是一个全球性协会,其成员包括世界领先的自动化公司。结合其成员的支持,ODVA的使命是在工业自动化中推进开放、可互操作的信息和…

到店商详架构变迁

一、项目背景 到店商详是平台为京东到店业务提供的专属商详页面,将传统电商购物路径打造成以LBS门店属性的本地生活服务交易链路。 二、架构变迁 1、 主站商详扩展点 **优点:**到店侧仅关注业务,无需过度关注服务部署、性能优化等。 **缺…

网络安全产品之认识入侵防御系统

由于网络安全威胁的不断演变和增长。随着网络技术的不断发展和普及,网络攻击的种类和数量也在不断增加,给企业和个人带来了巨大的安全风险。传统的防火墙、入侵检测防护体系等安全产品在面对这些威胁时,存在一定的局限性和不足,无…

数据结构与算法(一)线性表

逻辑结构 逻辑结构有以下几种关系 没关系 一对一关系 一对多关系 多对多关系 a是b的前驱,c是b的后继 该四种关系有以下别名 集合 线性表 树 图 …

SQL Server修改数据字段名的方法

1. ALTER TABLE语句修改 这是一种最常用的数据库更改字段的方法,使用Alter Table语句来更改数据库字段的名称。 一般格式如下: ALTER TABLE 表名 RENAME COLUMN 原字段名 TO 新字段名; 例如,修改字段名字段名从UserName到Uname:…

[IPv6]常用的几种IPv4和IPv6地址格式

记录一下常用的IPv4和IPv6地址格式 IPv4 IPv4地址是32位的,通常表示为“192.168.1.12”这样点分成4段的形式。 一个IP地址可以分为两部分,网络ID和主机ID。如何区分哪些位是网络ID,哪些位是主机ID,就需要子网掩码。 子网掩码 …