当前位置: 首页 > news >正文

自定义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 函数检查系统是否安装了特定的命令行工具,如果有任何一个工具没有安装,它会打印一条错误消息并退出脚本。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 实现分布式锁:Zookeeper vs Redis
  • Linux 驱动开发基础知识——认识LED驱动程序 (二)
  • Pytest 测试框架与Allure 测试报告——Allure2测试报告-L3
  • 【目标检测】YOLOv5算法实现(九):模型预测
  • 深度学习技术栈 —— 用Pytorch搭建神经网络识别数字(Kaggle实战)
  • 数据库性能优化的解决方案
  • 为何现在流行OpenStack和Docker结合?
  • 99个Python脚本实用实例
  • react 页签(自行封装)
  • 力扣每日一题---1547. 切棍子的最小成本
  • MSVS C# Matlab的混合编程系列1 - 看似简单的问题引出
  • Android学习(五):常用控件
  • 【EI会议征稿通知】2024年通信安全与信息处理国际学术会议(CSIP 2024)
  • C#调用C动态链接库
  • MicroPython核心(1):源码获取、编译构建
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • JAVA多线程机制解析-volatilesynchronized
  • JS 面试题总结
  • mac修复ab及siege安装
  • Mysql5.6主从复制
  • Netty源码解析1-Buffer
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 工作手记之html2canvas使用概述
  • 利用jquery编写加法运算验证码
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • UI设计初学者应该如何入门?
  • 移动端高清、多屏适配方案
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​用户画像从0到100的构建思路
  • ​油烟净化器电源安全,保障健康餐饮生活
  • ###C语言程序设计-----C语言学习(3)#
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #FPGA(基础知识)
  • #laravel 通过手动安装依赖PHPExcel#
  • #nginx配置案例
  • #VERDI# 关于如何查看FSM状态机的方法
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (30)数组元素和与数字和的绝对差
  • (多级缓存)多级缓存
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (转载)Linux网络编程入门
  • ***检测工具之RKHunter AIDE
  • .Net - 类的介绍
  • .NET 5种线程安全集合
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net 连接达梦数据库开发环境部署
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .Net下的签名与混淆
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @requestBody写与不写的情况
  • @Transactional 参数详解