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

Shell脚本-流程控制语句应用案例

在Shell脚本编程中,流程控制语句是实现逻辑控制和自动化任务处理的关键。通过合理运用条件判断、循环等流程控制语句,可以编写出高效、灵活的脚本程序。本文将通过几个实际的应用案例来展示如何使用这些流程控制语句解决具体的编程问题。

案例一:批量重命名文件

假设你有一组图片文件,想要根据特定规则(如添加前缀或修改扩展名)批量重命名这些文件。

脚本示例:

#!/bin/bash# 定义新前缀
prefix="img_"# 遍历当前目录下的所有jpg文件
for file in *.jpg; doif [ -f "$file" ]; then # 确保是普通文件new_name="${prefix}${file}"mv "$file" "$new_name"echo "Renamed '$file' to '$new_name'"fi
done

说明:

  • 使用for循环遍历指定类型的文件。
  • 通过if [ -f "$file" ]确保只处理普通文件。
  • mv命令用于重命名文件,并打印操作信息以便确认执行结果。

案例二:监控系统资源并发送警报

编写一个脚本来定期检查系统的CPU使用率和内存使用情况,如果超过设定阈值则发送警报(例如打印警告信息)。

脚本示例:

#!/bin/bash# 设置警戒线
cpu_threshold=80
mem_threshold=75while true; docpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}') # 获取CPU使用率mem_info=$(free -m | awk 'NR==2{printf "%.2f", $3*100/$2 }') # 获取内存使用率if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); thenecho "Warning: CPU usage is above threshold at $cpu_usage%"fiif (( $(echo "$mem_info > $mem_threshold" | bc -l) )); thenecho "Warning: Memory usage is above threshold at $mem_info%"fisleep 60 # 每隔一分钟检查一次
done

说明:

  • 使用while true创建一个无限循环,持续监控系统状态。
  • topfree命令分别用于获取CPU和内存的使用情况。
  • bc命令用于浮点数比较。
  • sleep 60让脚本暂停60秒后再次检查,避免过于频繁地占用系统资源。

案例三:根据输入参数执行不同操作

编写一个脚本,接受用户提供的参数来决定执行不同的操作,比如列出目录内容、创建新目录或删除目录。

脚本示例:

#!/bin/bashcase $1 inlist)ls;;create)mkdir "$2"echo "Directory '$2' created.";;delete)rm -r "$2"echo "Directory '$2' deleted.";;*)echo "Usage: $0 {list|create|delete} [directory]"exit 1;;
esac

说明:

  • 利用case语句根据不同参数执行相应的命令。
  • $1$2代表第一个和第二个命令行参数。
  • 提供了基本的帮助信息,指导用户如何正确使用该脚本。

案例四:读取配置文件并动态调整行为

假设有这样一个需求:从配置文件中读取设置,并据此调整脚本的行为。例如,根据配置决定是否启用调试模式。

脚本示例:

#!/bin/bashconfig_file="settings.conf"# 读取配置文件
debug_mode=$(grep "DEBUG_MODE" $config_file | cut -d '=' -f2)# 根据配置调整行为
if [ "$debug_mode" = "true" ]; thenecho "Debug mode is enabled."
elseecho "Debug mode is disabled."
fi# 执行其他操作...

说明:

  • 使用grepcut从配置文件中提取特定设置。
  • 根据提取到的设置值调整脚本行为。

结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

相关文章:

Shell脚本-流程控制语句应用案例

在Shell脚本编程中,流程控制语句是实现逻辑控制和自动化任务处理的关键。通过合理运用条件判断、循环等流程控制语句,可以编写出高效、灵活的脚本程序。本文将通过几个实际的应用案例来展示如何使用这些流程控制语句解决具体的编程问题。 案例一&#x…...

HarmonyOS NEXT应用开发-Notification Kit(用户通知服务)notificationManager.addSlot

1.notificationManager.addSlot 支持设备Phone2in1TabletCarWearable addSlot(type: SlotType, callback: AsyncCallback<void>): void 创建指定类型的通知渠道。使用callback异步回调。 系统能力&#xff1a;SystemCapability.Notification.Notification 示例&#xf…...

计算机网络核心知识点全解析(面试通关版)

一、网络体系结构&#xff1a;从OSI到TCP/IP的分层设计 1.1 七层模型与四层模型对比 OSI七层模型核心功能TCP/IP四层对应典型协议生活类比应用层为应用程序提供服务&#xff08;如文件传输、邮件、Web浏览&#xff09;应用层HTTP、FTP、SMTP、DNS快递面单信息&#xff08;收件…...

表示学习与部分域适应

表示学习&#xff08;Representation Learning&#xff09; 表示学习是机器学习的一个分支&#xff0c;旨在自动从原始数据中提取有意义的特征或表示&#xff0c;使得这些表示更适合后续任务&#xff08;如分类、检测、回归等&#xff09;。其核心思想是将高维、复杂、冗余的原…...

AI与思维模型【77】——PDCA思维模型

一、定义 PDCA思维模型是一种用于持续改进和优化工作流程、项目实施以及问题解决的科学管理方法。它由四个英文字母组成&#xff0c;分别代表计划&#xff08;Plan&#xff09;、执行&#xff08;Do&#xff09;、检查&#xff08;Check&#xff09;和处理&#xff08;Act&…...

Flink 系列之七 - Data Stream API的源算子原理

之前做过数据平台&#xff0c;对于实时数据采集&#xff0c;使用了Flink。现在想想&#xff0c;在数据开发平台中&#xff0c;Flink的身影几乎无处不在&#xff0c;由于之前是边用边学&#xff0c;总体有点混乱&#xff0c;借此空隙&#xff0c;整理一下Flink的内容&#xff0c…...

使用 SSE + WebFlux 推送日志信息到前端

为什么使用 SSE 而不使用 WebSocket, 请看 SEE 对比 Websocket 的优缺点。 特性SSEWebSocket通信方向单向&#xff08;服务器→客户端&#xff09;双向&#xff08;全双工&#xff09;协议基于 HTTP独立协议&#xff08;需 ws:// 前缀&#xff09;兼容性现代浏览器&#xff08…...

Java多线程同步有哪些方法?

大家好&#xff0c;我是锋哥。今天分享关于【Java多线程同步有哪些方法?】面试题。希望对大家有帮助&#xff1b; Java多线程同步有哪些方法? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Java 中&#xff0c;多线程同步是确保多个线程在访问共享资源时不会…...

Java—数 组

数组就是一个容器&#xff0c;用来存一批同种类型的数据。 一、静态初始化数组 1.1 定义方式 语法&#xff1a; 完整格式&#xff1a;数据类型 [ ] 数组名 new 数据类型 []{ 元素 1 &#xff0c;元素 2 &#xff0c;元素3… };简化格式&#xff1a;数据类型 [ ] 数组名 {…...

iOS/Android 使用 C++ 跨平台模块时的内存与生命周期管理

在移动应用开发领域,跨平台开发已经成为一种不可忽视的趋势。随着智能手机市场的持续扩张,开发者需要同时满足iOS和Android两大主流平台的需求,而这往往意味着重复的工作量和高昂的维护成本。跨平台开发的目标在于通过一套代码库实现多平台的支持,从而降低开发成本、加速产…...

为什么vue的key值,不用index?

在 Vue 中&#xff0c;key 的作用是帮助框架高效地识别和复用 DOM 节点或组件实例。使用数组索引 (index) 作为 key 值可能会导致以下问题&#xff0c;因此通常不建议这样做&#xff1a; 1. 列表数据变化时&#xff0c;可能导致错误的 DOM 复用 问题&#xff1a;当列表的顺序…...

Hi3516CV608 超高清智慧视觉 SoC 芯片 可提供开发资料

Hi3516CV608 超高清智慧视觉SoC 产品简介 总体介绍 Hi3516CV608是一颗面向消费类市场的IPC SoC&#xff0c;在新一代视频编解码标准、网络安全、隐私保护和人工智能方面引领行业发展。主要应用于室内外场景下的云台机、枪机、球机、枪球一体机、双目长短焦机等产品形态&#…...

Flink部署与应用——部署方式介绍

引入 我们通过Flink相关论文的介绍&#xff0c;对于Flink已经有了初步理解&#xff0c;这里简单的梳理一下Flink常见的部署方式。 Flink 的部署方式 StandAlone模式 介绍 StandAlone模式是Flink框架自带的分布式部署模式&#xff0c;不依赖其他的资源调度框架&#xff0c…...

数据挖掘技术与应用课程论文——数据挖掘中的聚类分析方法及其应用研究

数据挖掘中的聚类分析方法及其应用研究 摘要 聚类分析是数据挖掘技术中的一个重要组成部分,它通过将数据集中的对象划分为多个组或簇,使得同一簇内的对象具有较高的相似性,而不同簇之间的对象具有较低的相似性。 本文系统地研究了数据挖掘中的多种聚类分析方法及其应用。首先…...

SIEMENS PLC程序解读 ST 语言 车型识别

1、ST程序代码 IF #Type1_MIX < #CFG_Type.Type.CT AND #CFG_Type.Type.CT < #Type1_MAX AND #CFG_Type.Type.CT<>0 THEN#Type[1] : 1;FOR #I : 0 TO 39 DOIF #CFG_Type.Type.CT/10 (#Type1_MIX 10 * #I)/10 THEN#Sub_Type."1"[#I 1] : 1;END_IF; E…...

神经网络基础[损失函数,bp算法,梯度下降算法 ]

关于神经网络的基础的概念可以看我前面的文章 损失函数 在深度学习中, 损失函数是用来衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异 作用:指导模型的训练过程&#xff0c;通过反向传播算法计算梯度&#xff0c;从而更新网络的参数&#xff0c;最终使…...

python打印颜色(python颜色、python print颜色、python打印彩色文字、python print彩色、python彩色文字)

文章目录 python怎么打印彩色文字1. 使用ANSI转义码&#xff1a;2. 使用colorama库&#xff08;更好的跨平台支持&#xff09;&#xff1a;3. 使用termcolor库&#xff1a; python怎么打印彩色文字 在Python中打印彩色文字有几种方法&#xff1a; 1. 使用ANSI转义码&#xff…...

数字域残留频偏的补偿原理

模拟域的频谱搬移一般通过混频器实现。一般情况下模拟域调整完频偏后数字域还会存在一部分残留频偏这部分就需要在数字域补偿。原理比较简单本文进行下粗略总结。首先我们需要了解下采样具体可参考下信号与系统笔记(六)&#xff1a;采样 - 知乎。 采样前和采样后&#xff0c;角…...

Linux文件管理2

Linux 文件管理是系统操作的核心内容之一&#xff0c;涉及文件和目录的创建、删除、移动、查看、权限管理等操作。以下是 Linux 文件管理的核心知识点和常用操作总结&#xff1a; 一、文件系统结构 Linux 文件系统采用 树形结构&#xff0c;以 /&#xff08;根目录&#xff0…...

C++----模拟实现string

模拟实现string&#xff0c;首先我们要知道成员变量有哪些&#xff1a; class _string{private:char* _str;size_t capacity;//空间有多大size_t size;//有效字符多少const static size_t npos;};const size_t _string::npos-1;//static在外面定义不需要带static&#xff0c;np…...

Python torch.optim.lr_scheduler 常用学习率调度器使用方法

在看学习率调度器之前&#xff0c;我们先看一下学习率的相关知识&#xff1a; 学习率 学习率的定义 学习率&#xff08;Learning Rate&#xff09;是深度学习中一个关键的超参数&#xff0c;它决定了在优化算法&#xff08;如梯度下降法&#xff09;更新模型参数时&#xff0…...

从零开始学Python游戏编程39-碰撞处理1

在《从零开始学Python游戏编程38-精灵5》代码的基础上&#xff0c;添加两个敌人的防御塔&#xff0c;玩家的坦克无法移动到防御塔所在的空格中&#xff0c;如图1所示。 图1 游戏中的碰撞处理 1 游戏中空格的坐标 在《从零开始学Python游戏编程36-精灵3》中提到&#xff0c;可…...

同步定时器的用户数要和线程组保持一致,否则jmeter会出现接口不执行’stop‘和‘×’的情况

调试压测时发现了一个问题就是线程计划总是出现‘stop’的按钮无法执行完毕 发现时同步定时器导致的&#xff0c;就是有接口使用了同步定时器&#xff0c;但是这个同步定时器的用户数量设置的&#xff1c;线程组用户数量时&#xff0c;会出现执行无法结束的情况&#xff0c;如下…...

如何在Linux用libevent写一个聊天服务器

废话少说&#xff0c;先看看思路 因为libevent的回调机制&#xff0c;我们可以借助这个机制来创建bufferevent来实现用户和用户进行通信 如果成功连接后我们可以直接在listener回调函数里创建一个bufferevent缓冲区&#xff0c;并为每个缓冲区设置相应的读回调和事件回调&…...

Virtuoso ADE采用Spectre仿真中出现MOS管最小长宽比满足要求依然报错的情况解决方法

在ADE仿真中错误问题如下&#xff1a; ERROR (CMI-2440): "xxx.scs" 46338: I2.M1: The length, width, or area of the instance does not fit the given lmax-lmin, wmax-wmin, or areamax-areamin range for any model in the I2.M3.nch_hvt group. The channel w…...

防火墙原理与应用总结

防火墙介绍&#xff1a; 防火墙&#xff08;Firewall&#xff09;是一种网络安全设备&#xff0c;其核心目标是通过分析数据包的源地址、端口、协议等内容&#xff0c;保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为&#xff0c;同时允许合法流量自由通行。…...

Graph Database Self-Managed Neo4j 知识图谱存储实践2:通过官方新手例子入门(未完成)

官方入门例子&#xff1a;neo4j-graph-examples/get-started: An introduction to graph databases and Neo4j for new users 官方例子仓库&#xff1a;https://github.com/neo4j-graph-examples 下载数据 git clone https://github.com/neo4j-graph-examples/get-started …...

GIT下载步骤

git官方链接&#xff1a; 添加链接描述...

C++中的vector和list的区别与适用场景

区别 特性vectorlist底层实现动态数组双向链表内存分配连续内存块非连续内存块随机访问支持&#xff0c;通过索引访问&#xff0c;时间复杂度O(1)不支持&#xff0c;需遍历&#xff0c;时间复杂度O(n)插入/删除末尾操作效率高&#xff0c;时间复杂度O(1)任意位置操作效率高&am…...

软件测试入门学习笔记

今天学习新知识&#xff0c;软件测试。 什么是软件测试&#xff1f; 使用人工和自动手段来运行或测试某个系统的过程&#xff0c;目的在于检验它是否满足规定的需求或弄清实际结果与预期结果之间的差别。 软件测试的目的&#xff1f; 1&#xff09;为了发现程序&#xff0…...

2025年深度学习模型发展全景透视(基于前沿技术突破与开源生态演进的交叉分析)

2025年深度学习模型发展全景透视 &#xff08;基于前沿技术突破与开源生态演进的交叉分析&#xff09; 一、技术突破与能力边界拓展 智能水平跃升 2025年开源模型如Meta Llama-4、阿里Qwen2.5-VL参数规模突破1300亿&#xff0c;在常识推理能力测试中首次超越人类基准线7.2%谷歌…...

时间复杂度分析

复杂度分析的必要性&#xff1a; 当给我们一段代码时&#xff0c;我们是以什么准则来判断代码效率的高低呢&#xff1f;每一段代码都会消耗一段时间&#xff0c;或占据一段数据空间&#xff0c;那么自然是在实现相同功能的情况下&#xff0c;代码所耗时间最少&#xff0c;所占…...

BGE-m3 和 BCE-Embedding 模型对比分析

以下是对 BGE-m3 和 BCE-Embedding 模型在 embedding 领域的多维度对比分析&#xff0c;基于公开的技术文档和实验数据&#xff1a; 1. 基础信息对比 维度BGE-m3 (智源研究院)BCE-Embedding (网易)发布时间2024 年 1 月2023 年 9 月模型架构Transformer-basedTransformer-base…...

题目 3320: 蓝桥杯2025年第十六届省赛真题-产值调整

题目 3320: 蓝桥杯2025年第十六届省赛真题-产值调整 时间限制: 2s 内存限制: 192MB 提交: 549 解决: 122 题目描述 偏远的小镇上&#xff0c;三兄弟共同经营着一家小型矿业公司 “兄弟矿业”。公司旗下有三座矿山&#xff1a;金矿、银矿和铜矿&#xff0c;它们的初始产值分别用…...

计算机组成原理第二章 数据的表示和运算——2.1数制与编码

计算机组成原理第二章 数据的表示和运算——数制与编码 一、基本概念与核心知识点 1.1 数制系统基础 1.1.1 进位计数制 定义&#xff1a;以固定基数&#xff08;如2、8、10、16&#xff09;表示数值的系统核心要素&#xff1a; 基数&#xff08;R&#xff09;&#xff1a;允…...

基于归纳共形预测的大型视觉-语言模型中预测集的**数据驱动校准**

摘要 本研究通过分离共形预测&#xff08;SCP&#xff09;框架&#xff0c;解决了大型视觉语言模型&#xff08;LVLMs&#xff09;在视觉问答&#xff08;VQA&#xff09;任务中幻觉缓解的关键挑战。虽然LVLMs在多模态推理方面表现出色&#xff0c;但它们的输出常常表现出具有…...

Golang | 自行实现并发安全的Map

核心思路&#xff0c;读写map之前加锁&#xff01;哈希思路&#xff0c;大map化分为很多个小map...

【Python数据库编程实战】从SQL到ORM的完整指南

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1&#xff1a;SQLite基础操作案例2&#xff1a;MySQL连接池案例3&#xff1a;SQLAlchemy ORM …...

深入剖析扣子智能体的工作流与实战案例

前面我们已经初步带大家体验过扣子工作流&#xff0c;工作流程是 Coze 最为强大的功能之一&#xff0c;它如同扣子中蕴含的奇妙魔法工具&#xff0c;赋予我们的机器人处理极其复杂问题逻辑的能力。 这篇文章会带你更加深入地去理解并运用工作流解决实际问题 目录 一、工作流…...

【计算机网络】IP地址

IPv4 五类地址 1.0.0.0 ~ 126.255.255.255A类子网8位&#xff0c;主机24位128.0.0.0 ~ 191.255.255.255B类子网16位&#xff0c;主机16位192.0.0.0 ~ 223.255.255.255C类子网24位&#xff0c;主机8位224.0.0.0 ~ 239.255.255.255D类不分网络地址和主机地址&#xff0c;作为组播…...

基于CATIA参数化管道建模的自动化插件开发实践——NX建模之管道命令的参考与移植

引言 在机械设计领域&#xff0c;CATIA作为行业领先的CAD软件&#xff0c;其强大的参数化建模能力备受青睐。本文介绍如何利用Python的PySide6框架与CATIA二次开发技术&#xff0c;开发一款智能管状体生成工具。该工具借鉴了同类工业软件NX的建模的管道命令&#xff0c;通过Py…...

运维之SSD硬盘(SSD hard Drive for Operation and Maintenance)

背景 SSD的产生背景是计算技术发展和市场需求驱动的结果。早期计算机使用磁芯存储器&#xff0c;后来被半导体存储器取代&#xff0c;提高了速度和可靠性。随着电子设备小型化&#xff0c;对轻便、低功耗存储器的需求增长&#xff0c;SSD因无机械部件、速度快、耗电少而受到关…...

基于javaweb的SSM+Maven红酒朔源管理系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

HTML 地理定位(Geolocation)教程

HTML 地理定位(Geolocation)教程 简介 HTML5 的 Geolocation API 允许网页应用获取用户的地理位置信息。这个功能可用于提供基于位置的服务&#xff0c;如导航、本地搜索、天气预报等。本教程将详细介绍如何在网页中实现地理定位功能。 工作原理 浏览器可以通过多种方式确定…...

RHEL与CentOS:从同源到分流的开源操作系统演进

RHEL与CentOS&#xff1a;从同源到分流的开源操作系统演进 一、核心关系&#xff1a;源代码的重构与社区化 RHEL&#xff08;Red Hat Enterprise Linux&#xff09;与CentOS&#xff08;Community ENTerprise Operating System&#xff09;的关系可以概括为“同源异构”。RHE…...

架构师面试(三十六):广播消息

题目 在像 IM、短视频、游戏等实时在线类的业务系统中&#xff0c;一般会有【广播消息】业务&#xff0c;这类业务具有瞬时高流量的特点。 在对【广播消息】业务实现时通常需要同时写 “系统消息库” 和更新用户的 “联系人库” 的操作&#xff0c;用户的联系人表中会有未读数…...

Spine 动画教程:皮肤制作

一、前言 搁了很久的抖音直播小玩法开发&#xff0c;最近又让我想起来了。由于是初次尝试&#xff0c;所以我将开发费用的预算降到为零。不但不买服务器采用 UnitySDK 的指令直推&#xff0c;而且游戏的资产也用 AI 生成&#xff0c;主打省时又省钱。 但是图片有了&#xff0…...

Rust 学习笔记:函数和控制流

Rust 学习笔记&#xff1a;函数和控制流 Rust 学习笔记&#xff1a;函数和控制流函数&#xff08;Function&#xff09;语句和表达式带返回值的函数注释控制流if 表达式使用 else if 处理多个条件在 let 语句中使用 if循环loop从循环中返回值循环标签消除多个循环之间的歧义带 …...

探秘LLM推理模型:hidden states中藏着的self verification的“钥匙”

推理模型在数学和逻辑推理等任务中表现出色&#xff0c;但常出现过度推理的情况。本文研究发现&#xff0c;推理模型的隐藏状态编码了答案正确性信息&#xff0c;利用这一信息可提升推理效率。想知道具体如何实现吗&#xff1f;快来一起来了解吧&#xff01; 论文标题 Reasoni…...

《Learning Langchain》阅读笔记8-RAG(4)在vector store中存储embbdings

什么是 vector store&#xff1f; 与专门用于存储结构化数据&#xff08;如 JSON 文档或符合关系型数据库模式的数据&#xff09;的传统数据库不同&#xff0c;vector stores处理的是非结构化数据&#xff0c;包括文本和图像。像传统数据库一样&#xff0c;vector stores也能执…...