case和字符串操作
使用if选择结构
if [];then
elif [];then #注意这个地方,java是else if
else ;
fi
使用for循环结构
使用for循环,语法结构如下所示: for 变量名 in 值1 值2 值3 #值的数量决定循环任务的次数 do命令序列 done
#循环输出1到10
for i in {1..10} #注意的是花括号里面不加空格
doecho $i;
done
#从文件中获取数据,进行批量的ping,或者用户创建
# 创建存储信息的文件,也是数据来源
vim /sh/ip.txt
192.168.88.2
192.168.88.254
192.168.88.3
192.168.88.240
#使用$(cat 路径)获取数据
for i in $( cat /sh/ip.txt )
doping -c 1 $i &> /dev/null;if [ $? == 1 ];thenecho $i"可以ping通";else echo $i"bu可以ping通";fi
done
使用while循环结构
写法 | 特点 | 适用场景 |
---|---|---|
while : | 简洁,无限循环,需手动退出。 | 简单守护进程、持续监控 |
while true | 功能相同,但语义更明确(推荐)。 | 同 while : |
while [条件] | 条件满足时循环,可自动终止。 | 需要动态终止条件的场景 |
使用while循环,语法结构如下所示:
while 条件测试 #根据条件的结果决定是否要执行任务,条件测试成功的话就执行,如果失败立刻结束循环
do命令序列
done
num=$[RANDOM%10+1] 是一种生成 1 到 10 之间的随机整数 的方法。
num=$[RANDOM%12+1]
q=1
while [ $q -eq 1 ];
doread -p "shuru[1-12]:" nub;if [ $nub -gt $num ];thenecho "pianda";elif [ $num -gt $nub ];thenecho "pianxiao";else echo "daduil";q=0;fi
done
注意:使用[]一定要记得使用空格
中断及退出
关键字 | 作用范围 | 功能描述 | 典型场景 | 示例代码 |
---|---|---|---|---|
break | 循环结构(for /while /until ) | 立即退出当前循环,后续迭代不再执行。 | 提前终止循环(如找到目标后退出)。 | bash<br>for i in {1..5}; do<br> [ "$i" -eq 3 ] && break<br> echo "$i"<br>done<br># 输出: 1 2<br> |
continue | 循环结构(for /while /until ) | 跳过当前迭代,直接进入下一次循环。 | 跳过特定条件下的处理(如忽略无效输入)。 | bash<br>for i in {1..5}; do<br> [ "$i" -eq 3 ] && continue<br> echo "$i"<br>done<br># 输出: 1 2 4 5<br> |
exit | 整个脚本或函数 | 立即终止脚本或函数,并返回退出状态码(默认 0 ,非零表示错误)。 | 发生致命错误时终止脚本,或从函数返回状态码。 | bash<br>if [ ! -f "file.txt" ]; then<br> echo "文件不存在"<br> exit 1<br>fi<br># 若文件不存在,脚本终止并返回状态码 1<br> |
# 编写持续创建用户脚本sum.sh
q=0;
while :
doread -p "请输入用户名,输入0退出:" usern; if [ $usern == 0 ];thenbreak; #break跳出循环,exit结束正在执行的进程elif useradd "$usern";then q=$(($q+1)); continue;else break;fidone
echo $q;
工具 | 语法格式 | 四则运算示例 | 求模运算示例 | 适用场景 | POSIX 兼容性 | 推荐度 |
---|---|---|---|---|---|---|
$(( )) | $((表达式)) | echo $((a + b)) echo $((a * b)) | echo $((a % b)) | 通用算术运算(推荐),支持所有标准运算符(+ , - , * , / , % 等)。 | ✅ 完全兼容 | ⭐⭐⭐⭐⭐ |
$[ ] | $[表达式] | echo $[a + b] echo $[a * b] | echo $[a % b] | 旧版 Bash 语法(已过时),功能与 $(( )) 相同,但非 POSIX 标准。 | ❌ 不兼容(部分 Shell 不支持) | ❌ 不推荐 |
let | let "表达式" | let "result=a+b" let "result=a*b" | let "result=a%b" | 变量赋值或复杂运算(如 i++ ),但无法直接输出结果,需结合 echo 或变量。 | ✅ 完全兼容 | ⭐⭐⭐ |
基于case分支编写脚本
case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认操作。case分支的语法结构如下所示:
case 变量 in
模式1)命令序列1 ;;
模式2)命令序列2 ;;.. ..
*)默认命令序列
esac
case $1 in
-f)touch $2;;
-d)mkdir $2;;
-r)remove -f $2;;
*)echo "-d,-f,-r";
esac
使用Shell函数
在Shell脚本中,将一些需重复使用的操作,定义为公共的语句块,即可称为函数。通过使用函数,可以使脚本代码更加简洁,增强易读性,提高Shell脚本的执行效率 1)函数的定义方法 格式1: function 函数名 {命令序列.. .. }格式2: 函数名() {命令序列.. .. }2)函数的调用直接使用“函数名”的形式调用,如果该函数能够处理位置参数,则可以使用“函数名 参数1 参数2 .. ..”的形式调用。注意:函数的定义语句必须出现在调用之前,否则无法执行。3) 测试语法格式[root@sv7 ~]# a() { #定义函数echo abcecho xyz}[root@sv7 ~]# a #调用函数
字符串处理
字符串截取的用法: ${变量名:起始位置:长度}
起始位置从0开始计数
[root@nsd ~]# echo ${phone:0:3}
121字符串替换的两种用法:
1、只替换第一个匹配结果:${变量名/old/new}
2、替换全部匹配结果:${变量名//old/new}[root@nsd ~]# echo ${phone/2/*}
1*12121212121
[root@nsd ~]# echo ${phone//2/*}
1*1*1*1*1*1*1
[root@nsd ~]# echo $phone ==注:替换数据不会改变原始数据的值==
1212121212121 字符串掐头去尾:
1、从左向右,最短匹配删除:${变量名#*关键词}
2、从左向右,最长匹配删除:${变量名##*关键词}
3、从右向左,最短匹配删除:${变量名%关键词*}
3、从右向左,最长匹配删除:${变量名%%关键词*}
[root@nsd ~]# echo ${n##* }
/mnt/dvd
[root@nsd ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 10.5G 0 rom /mnt/dvd
字符串初值的处理
可以通过${var:-初值}判断变量是否存在,决定变量的初始值。
# 编写一个脚本可以创建用户,密码可以自定义也可以使用默认值123456
read -p "user:" usert
useradd $usert
read -p "password:" pas
echo ${pas:-123} | passwd --stdin $usert
cut
示例:截取以空格分隔的字符串的第二部分
echo “hello world linux” | cut -d’ ’ -f2
输出:world
-d' ':指定分隔符为空格(可替换为其他字符如 -d':')。
-f2:截取第二个字段。 1开始
相关文章:
case和字符串操作
使用if选择结构 if [];then elif [];then #注意这个地方,java是else if else ; fi 使用for循环结构 使用for循环,语法结构如下所示: for 变量名 in 值1 值2 值3 #值的数量决定循环任务的次数 do命令序列 done#循环输出1到10 for i in {1..10} #注…...
Golang|外观模式和具体逻辑
最终返回的是Document的切片,然后取得Bytes自己再去做反序列化拿到文档的各种详细信息。 外观模式是一种结构型设计模式,它的目的是为复杂的子系统提供一个统一的高层接口,让外部调用者(客户端)可以更简单地使用子系统…...
关于kafka
1.为什么需要消息队列 举个经典的例子。 你是一个网购达人,经常在网上购物。快递小哥到了你的小区后,立刻给你打电话说:“你的快递到了,请马上来取。” 但你是一个合格的牛马,在上班,不方便取快递&#…...
OpenCV 图形API(67)图像与通道拼接函数-----水平拼接(横向连接)两个输入矩阵(GMat 类型)函数concatHor()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于水平拼接两个 GMat 矩阵,要求输入矩阵的行数必须一致: GMat A { 1, 4,2, 5,3, 6 }; GMat B { 7, 10,8, 11,9, 12 }; GM…...
夜莺 v8.0.0-beta.10 部署
夜莺 v8.0.0-beta.10 部署 1. mariadb-server2. Redis安装3. 下载 n9e-v8.0.0-beta.10-linux-amd64.tar.gz设置 root 用户密码配置文件 配置mariadb的登录密码导入数据库表结构配置为 systemd 启动服务重新加载 systemd配置日志 访问夜莺VictoriaMetrics 时序数据库安装接入数据…...
HTML5好看的水果蔬菜在线商城网站源码系列模板7
文章目录 1.设计来源1.1 主界面1.2 关于我们界面1.3 商城界面1.4 商品信息界面1.5 我的账户界面1.6 联系我们界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址&#…...
优化问题中变量分类与作用分析
优化问题中的变量分类与作用 在优化问题中,变量的定义和作用因问题类型和建模需求而异。以下从决策变量、控制变量的区别与联系出发,结合其他相关变量进行系统分析: 1. 决策变量(Decision Variables) 定义:…...
RSS‘25|CMU提出统一空中操作框架:以末端执行器为中心,无人机实现高精度遥操作
导读在科技飞速发展的当下,机器人技术不断拓展其应用边界,空中操作领域成为了研究的热点之一。无人空中操纵器(UAMs)凭借其在高空复杂任务中的巨大潜力,正逐渐改变着诸如高空设备维护、桥梁检测等传统行业的作业模式&a…...
智能指针之设计模式6
本系列文章探讨了智能指针和设计模式的关系,前面五篇文章介绍的是使用设计模式实现了智能指针的相关特性,比如使用工厂模式控制了智能指针对象的创建,使用代理模式控制了资源对象的销毁。本文介绍一下使用智能指针来帮助我们实现相关的设计模…...
【设计模式】GOF概括
一、创建型模式(5种) 1. 单例模式 (Singleton) 适用场景:全局唯一实例(如配置管理、日志工具)。C示例:// 所谓的scott mayer单例模式 class Singleton { public:static Singleton& getInstance() {st…...
深入浅出限流算法(三):追求极致精确的滑动日志
在限流的世界里,精度往往是关键。我们已经讨论过固定窗口(简单但有突刺)和滑动窗口(更平滑但仍有格子边界)。如果我们需要更精确的控制,滑动日志 (Sliding Log) 算法便登场了。 核心思想:记录每…...
一文读懂Tomcat应用之 CentOS安装部署Tomcat服务
目录 一、Tomcat概述 (一)、Tomcat安装目录简介 (二)、Tomcat配置文件简介 1、server.xml文件 2、web.xml 3、context.xml 4、tomcat-users.xml 5、logging.properties 二、Tomcat安装部署 (一)、环境规划 (二)、安装JDK 1、下载JDK二进制安装包 2、解压JDK二进制…...
JVM 内存分配策略
引言 在 Java 虚拟机(JVM)中,内存分配与垃圾回收是影响程序性能的核心机制。内存分配的高效性直接决定了对象创建的速率,而垃圾回收策略则决定了内存的利用率以及系统的稳定性。为了在复杂多变的应用场景中实现高效的内存管理&am…...
轻松上手:使用 Docker Compose 部署 TiDB 的简易指南
作者:ShunWah 在运维管理领域,我拥有多年深厚的专业积累,兼具坚实的理论基础与广泛的实践经验。精通运维自动化流程,对于OceanBase、MySQL等多种数据库的部署与运维,具备从初始部署到后期维护的全链条管理能力。拥有Oc…...
Linux权限管理
权限的概念 在 Linux 系统里,权限管理是系统安全的关键环节。权限管理的核心目的是明确不同用户对文件和目录的操作许可范围,以此来保障系统资源的安全与合理使用。权限管理涉及三种不同的用户角色和三种基本的操作权限。 用户角色 所有者(…...
Crusader Kings III 王国风云 3(十字军之王 3) [DLC 解锁] [Steam] [Windows SteamOS macOS]
Crusader Kings III 王国风云 3(十字军之王 3) [DLC 解锁] [Steam] [Windows & SteamOS & macOS] DLC 版本 至最新全部 DLC 后续可能无法及时更新文章,具体最新版本见下载文件说明; DLC 解锁列表(仅供参考&am…...
架构风格对比
架构风格深度对比:从管道-过滤器到微内核 📜 引言 在软件架构设计中,不同的架构风格适用于不同的业务场景。本文将深入解析 7种主流架构风格,包括它们的核心思想、优缺点、适用场景,并通过对比表格和示例帮助您选择最…...
V Rising 夜族崛起 [DLC 解锁] [Steam] [Windows SteamOS]
V Rising 夜族崛起 [DLC 解锁] [Steam] [Windows & SteamOS] 注意 这个符号表示 可打开折叠内容 需要有游戏正版基础本体,安装路径不能带有中文,或其它非常规拉丁字符;仅限用于自建服务器,并禁用 VAC !࿰…...
HTML标记语言_@拉钩教育
目录 1.文本标签 2.格式化标签 3.图片标签 4.超链接标签 5.表格标签 6表单标签 6.1 6.2 6.3 7.行内框架(超链接内套一个页面) 8.多媒体标签(音/视频) 1.文本标签 2.格式化标签 3.图片标签 4.超链接标签 5.表格标签 6表单标签 6.1 6.2 6.3 7.行内框架(超链接内套一个…...
云原生开发革命:iVX 如何实现 “资源即插即用” 的弹性架构?
云原生技术正以惊人的速度重塑软件开发的版图。短短几年间,它从少数技术先驱的实验性方案,迅速崛起为全球企业数字化转型的核心驱动力。Gartner 预测,到 2026 年,全球 85% 的企业将全面采用云原生技术进行应用开发与部署。云原生架…...
whois为什么有时会返回两个不同的域名状态
前阵子发现一直想注册但被别人注册了的一个域名快要过期了,就想着写个脚本跑在电脑上,每分钟检查一次域名状态,一旦域名被正式删除,就发封邮件通知我,这样就不用频繁手动检查域名状态了。 写脚本时发现一个有趣的现象…...
跨境电商店铺矩阵布局:多账号运营理论到实操全解析
在当今竞争激烈的全球电商市场中,跨境电商店铺矩阵布局已成为卖家脱颖而出的关键策略。本文将深入剖析跨境电商店铺矩阵布局的本质、优势,并提供从理论到实操的全方位指导,助力您在全球市场中开启属于自己的销售新篇章。 一、是什么ÿ…...
安卓基础(强制转换)
一、强制转换(Type Casting) 1. 什么是强制转换? 当你想将一个类型的对象转换为另一个类型时,如果它们之间存在继承关系,就需要强制转换。 注意:只有存在继承关系的类型…...
VS2022+OpenCasCade配置编译
一、Open CASCADE Technology介绍及安装(windows10) Open CASCADE Technology(简称OCCT)是一款开源的 3D CAD/CAM/CAE 软件开发平台,广泛应用于工业设计、工程仿真、制造等领域。开源OCC对象库是一个面向对象C类库&…...
AIGC重构元宇宙:从内容生成到沉浸式体验的技术革命
1. 引言 当数字技术掀开人类交互的新篇章,元宇宙正从科幻构想蜕变为现实——这个由虚拟与现实交织的数字宇宙,承载着未来社会的娱乐、工作与社交形态。作为核心赋能技术,AIGC(人工智能生成内容)正以惊人的创造力&…...
当所有人都用上先进ai,如何保持你的优势?
这不再是你能用上openai模型别人只能用文心一言的时候,而是每个人都可以免费用deepseek r1的时代。如今,办公室里每个人都能随时调用deepseek模型,喊一声“帮我写段代码”便轻松解决问题。在这种情况下,单纯“会用AI”已经很难再形…...
【浙江大学DeepSeek公开课】人类经验与AI算法的镜像之旅
人类经验与AI算法的镜像之旅 人类经验与 AI 算法的镜像之旅一、语言的奥秘:人类如何解码世界二、从符号到智能:AI 的语言理解之路三、DeepSeek - V3:大语言模型的构建与进化四、DeepSeek - R1:推理模型的诞生与突破五、智能体时代…...
【前端】从零开始的搭建顺序指南(技术栈:Node.js + Express + MongoDB + React)book-management
项目路径总结 后端结构 server/ ├── controllers/ # 业务逻辑 │ ├── authController.js │ ├── bookController.js │ ├── genreController.js │ └── userController.js ├── middleware/ # 中间件 │ ├── authMiddleware…...
探针台维护方法
探针台的维护直接影响其测试精度与使用寿命,需结合日常清洁、环境控制、定期校准等多维度操作,具体方法如下: 一、日常清洁与保养 1.表面清洁 使用无尘布或软布擦拭探针台表面,避免残留清洁剂或硬物划伤精密部件。探针头清…...
js day8
事件绑定 事件:发生在html元素上的特定动作,鼠标点击,键盘按下,鼠标移入 事件三要素:事件源(触发事件的元素) 事件类型,事件触发后执行的函数 通过html触发事件(不建议…...
大模型训练平台:重构 AI 研发范式的智慧基建
当 AI 研发陷入“高耗低效”困局,如何破局? 在大模型技术爆发的今天,企业 AI 研发正面临前所未有的挑战:某金融机构为训练风控模型投入大量算力,却因数据标注耗时半年延误项目;某制造企业搭建的训练集群利…...
vuex刷新数据丢失解决方案-vuex-persist
安装 npm install -S vuex-persist(yarn add vuex-persist) 使用: /store/index.js引入vuex-persist配置: import Vue from vue import Vuex from vuex import VuexPersistence from vuex-persist import user from ./modules/use…...
多模态革命!拆解夸克AI相机技术架构:如何用视觉搜索重构信息交互?(附开源方案对比)
一、技术人必看:视觉搜索背后的多模态架构设计 夸克「拍照问夸克」功能绝非简单的OCRQA拼接,而是一套多模态感知-推理-生成全链路系统,其技术栈值得开发者深挖: 视觉编码器:基于Swin Transformer V2,支持4…...
Python依据卫星TLE轨道根数,计算可见时间窗口
1.卫星TLE数据 概括:两行字符串表示的卫星参数 字段 字符串位置(以0为起点) 描述内容注释1 01–01卫星编号203-07卫星类别卫星类别(U表示不保密,可供公众使用的;C 表示保密,仅限NORAD使用&…...
C++?模板!!!
一、引言 在之前我们一起学习了C中类和对象、动态内存管理等相关知识,今天我们将一起学习C中有关模板的相关知识,学完模板之后我们就可以进入C中非常重要的库---STL了,那么模板究竟有什么奥秘呢?让我们一起来看看吧! …...
web技术与nginx网站服务
一、Web服务基础概念 Web服务器核心功能 通过HTTP/HTTPS协议提供网页内容,支持HTML、CSS、JavaScript等静态资源,动态内容需结合后端语言(如PHP、Python)处理36。常用软件:Nginx、Apache、Lighttpd。Nginx以高并发、低…...
关系数据的可视化
目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装Python所需要的第三方模块 二、实验 【实验总结】 【实验目的】 1.掌握关系数据在大数据中的应用 2.掌握关系数据可视化方法 3. python 程序实现图表 【实验原理】 在传统的观念里面࿰…...
MATLAB小试牛刀系列(1)
问题描述 某机床厂生产甲、乙两种机床,每台机床销售后的利润分别为 4 千元与 3 千元。生产甲机床需用 A、B 机器加工,加工时间分别为每台 2h 和每台 1h;生产乙机床需用 A、B、C 三种机器加工,加工时间均为每台 1h。若每天可用于加…...
CUDA、pytorch、配置环境教程合集
1.CUDA卸载 参考: 【环境搭建】卸载&重新安装cudacudnnanacondagpu版pytorch_卸载cuda-CSDN博客 【cuda】cuda安装与卸载升级_升级cuda-CSDN博客 检测代码: https://www.zhihu.com/question/482335084 import torch print(CUDA版本:,torch.vers…...
代码随想录打卡|Day29 动态规划Part02(不同路径、不同路径2、整数拆分、不同的二叉树搜索)
动态规划Part02 不同路径 力扣题目链接 代码随想录链接 视频讲解链接 题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角…...
Leetcode刷题 | Day49_图论01
一、学习任务 深度优先搜索理论基础深度优先搜索理论基础 | 代码随想录98. 所有可达路径(ACM)797. 所有可能的路径(Leetcode)广度优先搜索理论基础 二、具体题目 1.深度优先搜索理论基础 类似回溯算法,二叉树的前中后序遍历是其在二叉树领域的应用。 代码框架&am…...
if consteval
if consteval 是 C23 引入的新特性,该特性是关于immediate function 的,即consteval function。用于在编译时检查当前是否处于 立即函数上下文(即常量求值环境),并根据结果选择执行不同的代码路径。它是对 std::is_con…...
【iOS】OC源码阅读——alloc源码分析
文章目录 前言基本调试方法allocalloc函数逐步调试空类检查快速路径:默认内存分配慢速路径:自定义内存分配slowpath和fastpath alloc核心操作cls->instanceSize:计算所需内存大小内存字节对齐原则为什么要16字节对齐内存字节对齐总结 其他…...
[JavaScript]对象关联风格与行为委托模式
对象关联. “[[prototype)]的机制就是存在于对象中的一个内部链接,它会引用其它对象” 为何创建原型链(关联)? Object.create()会创建一个新对象,参数对象会作为新对象的__proto__. “我们并不需要类来创建两个对象之间的关系,只需要通过委托来关联对象就足够了.而Object.c…...
在 Ubuntu 24.04 LTS 一台机子上同时部署Dify 1.3.1 和 RAGflow 0.18.0
一、RAGflow 0.18.0 简介 有关 Dify 的简介,可以查看我之前分享的 《在 Ubuntu24.04 LTS 上 Docker Compose 部署 Dify 社区版 1.0.1》文章。RAGFlow是一款基于深度文档理解(deepdoc)构建的开源 RAG引擎。其中,深度文档理解&#…...
小熊派BearPi-Pico H3863(二)环境配置 Ubuntu编译源码与VSCode远程开发指南
BearPi-H3863 Ubuntu编译源码与VSCode远程开发指南 摘要开发环境配置方案选型环境部署实战手册一、基础环境配置1. 镜像准备2. 虚拟机初始化3. 网络异常处理 二、VSCode远程开发配置1. SSH服务验证2. VSCode插件安装3. 远程连接实战4. 项目管理 关键要点总结 摘要 本文针对Bea…...
组装 (DIY) 一台显示器 (4K 屏支持 4 画面分屏 PBP 1080p x4)
首发日期 2025-04-26, 以下为原文内容: 家里的 PC 主机比较多, 如果同时开机, 显示器就不够用了. 因为穷, 窝租住的房间又很小, 放不下很多显示器. 所以, 窝希望买一台支持 分屏 功能的显示器. 最好是 4K 分辨率 (3840x2160) 的屏幕, 然后 4 分屏 (有 4 个 DP 或 HDMI 输入接口…...
SwiftUI 8.List介绍和使用
SwiftUI 的 List 组件用于展示可滚动的内容集合,支持静态或动态数据、交互操作(如点击、滑动删除)、分组、自定义样式等。以下是其详细介绍及使用方法: 一、基本用法 1. 静态列表 直接声明固定内容: struct Content…...
Android Kotlin ViewModel 错误处理:最佳 Toast 提示方案详解
在 Android Kotlin 的 ViewModel 中显示 Toast 提示需要特殊处理,因为 ViewModel 不应该直接持有 Context(避免内存泄漏),且 UI 操作(如 Toast)必须在主线程执行。以下是几种标准解决方案: 方案…...
Vue 集成 wangEditor5 公式编辑器的实现步骤
Vue 集成 wangEditor5 公式编辑器的实现步骤 1. 安装公式依赖库2. 配置公式编辑器插件3. 启用工具栏公式按钮4. 组件模板与事件绑定功能验证与调试注意事项版本兼容性: 1. 安装公式依赖库 安装 KaTeX 或 kityformula:根据项目需求选…...