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 不支持)❌ 不推荐
letlet "表达式"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开始

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

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

相关文章

Stm32 烧录 Micropython

目录 前言 准备工作 开始操作 问题回顾 后记 前言 去年曾经尝试Pico制作openmv固件&#xff0c;由于知识储备不够最后失败了&#xff0c;留了一个大坑&#xff0c;有了前几天的基础&#xff0c;慢慢补齐知识&#xff0c;最近这一周一直在学习如何编译Stm固件并烧录到单片机…

盐化行业数字化转型规划详细方案(124页PPT)(文末有下载方式)

资料解读&#xff1a;《盐化行业数字化转型规划详细解决方案》 详细资料请看本解读文章的最后内容。 该文档聚焦盐化行业数字化转型&#xff0c;全面阐述了盐化企业信息化建设的规划方案&#xff0c;涵盖战略、架构、实施计划、风险及效益等多个方面&#xff0c;旨在通过数字化…

2025年人工智能火爆技术总结

2025年人工智能火爆技术总结&#xff1a; 生成式人工智能 生成式人工智能可生成高质量的图像、视频、音频和文本等多种内容。如昆仑万维的SkyReels-V2能生成无限时长电影&#xff0c;其基于扩散强迫框架&#xff0c;结合多模态大语言模型和强化学习等技术&#xff0c;在运动动…

边缘计算革命:大模型轻量化部署全栈实战指南

当ResNet-152模型能在树莓派4B上实现每秒27帧实时推理时&#xff0c;边缘智能时代真正到来。本文解析从模型压缩到硬件加速的完整技术栈&#xff0c;实测Transformer类模型在移动端的部署时延可压缩至16ms&#xff0c;揭示ARM芯片实现INT4量化的工程秘诀与十种典型场景优化方案…

边缘计算:数字世界的”末梢神经系统”解析-优雅草卓伊凡

边缘计算&#xff1a;数字世界的”末梢神经系统”解析-优雅草卓伊凡 一、边缘计算深度解析 1.1 边缘计算的定义与架构 边缘计算&#xff08;Edge Computing&#xff09;是一种分布式计算范式&#xff0c;它将数据处理能力从传统的集中式云数据中心推向网络边缘&#xff0c;更…

面试手撕——迭代法中序遍历二叉树

思路 访问顺序和处理顺序不一致导致迭代法难写&#xff0c;体现在总要先遍历根节点&#xff0c;才能访问左右孩子&#xff0c;用null标记&#xff0c;null标记的节点表示已经访问过了&#xff0c;下一次可以处理&#xff0c;所以在当前栈顶节点不是null的时候&#xff0c;都要…

AD系列:Windows Server 2025 安装AD CS角色和颁发证书

什么是 Active Directory 证书服务&#xff1f; Active Directory 证书服务 (AD CS) 是一个 Windows Server 角色&#xff0c;负责颁发和管理在安全通信和身份验证协议中使用的公钥基础结构 (PKI) 证书。 颁发和管理证书 数字证书可用于对电子文档和消息进行加密和数字签名&…

kubernetes》》k8s》》Service 、Ingress 区别

K8S>>Service 资料 K8S >>Ingress 资料 Ingress VS Service 物理层数据链路层网络层传输层会话层表示层应用层 Ingress是一种用于暴露HTTP和HTTPS路由的资源&#xff0c;它提供了七层&#xff08;应用层&#xff09;的负载均衡功能。Ingress可以根据主机名、…

【java WEB】恢复补充说明

Server 出现javax.servlet.http.HttpServlet", according to the project’s Dynamic Web Module facet version (3.0), was not found on the Java Build Path. 右键项目 > Properties > Project Facets。Dynamic Web Module facet version选4.0即可 还需要在serv…

VMware 创建虚拟机+简易安装Ubuntu的详细操作步骤

VMware 创建虚拟机安装Ubuntu的详细操作步骤 一、创建虚拟机1.1 点击创建新的虚拟机1.2 选择自定义创建虚拟机1.3 选择虚拟机的硬件兼容性1.4 安装客户机操作系统1.5 简易安装信息1.6 命名虚拟机名称1.7 处理器配置1.8 虚拟机内核选择1.9 网络类型1.9 选择I/O 控制器类型1.10 选…

GCC-C语言“自定义段”

一、起因 事情的起因是这样的,在看别人代码时,发现了一种很有意思的写法,因为本人主要是以应用层开发为主,所以对这种写法还是比较少见的,所以研究了一下,就牵扯出了一些知识点,这里先卖个关子,继续往下看。 二、经过 发现了一串这样的代码 static void do_mac(mcmd_…

【信息系统项目管理师-论文真题】2021上半年论文详解(包括解题思路和写作要点)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题1:论信息系统项目的合同管理1、写作要点2、解题思路项目合同管理的过程项目合同主要的条款内容试题2:论信息系统项目的范围管理1、写作要点2、解题思路项目范围管理的过程核心范围对应的需求跟踪矩阵项目…

python2反编译部分

文章目录 1、所需环境2、确认打包工具&#xff08;没成功&#xff09;3、 解包.exe文件&#xff08;以PyInstaller为例&#xff09; - useful【***总的来说这一步对我有用】4、定位关键文件 - useful5、 修复.pyc文件头&#xff08;关键步骤&#xff01;&#xff09;- maybe-ig…

基于STM32的中点圆算法,画空心圆的函数

中点圆算法(Midpoint Circle Algorithm)是一种高效绘制圆的算法&#xff0c;它利用圆的对称性和整数运算来避免浮点计算&#xff0c;非常适合嵌入式系统使用。 空心圆绘制函数实现 /*** brief 使用中点圆算法绘制空心圆* param x0: 圆心x坐标* param y0: 圆心y坐标* param…

Android Kotlin 项目完整集成 Bugly 异常监控指南

Android Kotlin 项目集成 Bugly 异常监控完整指南 一、Bugly 简介 Bugly 是腾讯提供的专业移动应用异常监控平台&#xff0c;支持&#xff1a; 崩溃报告&#xff08;Java/Native&#xff09;错误分析性能监控热更新功能&#xff08;需额外配置&#xff09; 二、集成步骤 1…

【电脑维修】MERCURY水星无线网卡导致 Windows 网络适配器无法连接的一种情况

故障现象 Powershell 无法启动&#xff0c; Terminal 无法启动&#xff0c; CMD 无法启动。 操作1 重新拔插 MERCURY 无线USB网卡&#xff0c;上述各种终端恢复相应。 分析 应该是MERCURY驱动故障导致卡死 操作2 磁盘出现 MERCURY 盘。里面是一个 MERCURY.exe 驱动安装程…

Docker 打上 Tag 和 Push 的意思

在 Docker 中&#xff0c;打 Tag&#xff08;Tagging&#xff09; 和 Push&#xff08;Pushing&#xff09; 是两个关键操作&#xff0c;用于管理镜像的版本并上传到镜像仓库&#xff08;如 Docker Hub、阿里云 ACR、Harbor 等&#xff09;。 1. 打 Tag&#xff08;Tagging&…

简化excel校验提高开发效率

业务背景&#xff1a;上传excel文件进行基础数据校验&#xff0c;然而东西太多写着写着就...自然成了测试的KPI了 解决思路&#xff1a;使用现有的注解处理&#xff0c;原理使用validate注解原理 直接上干货&#xff0c;一行代码搞定校验&#xff1a; ValidateUtils.validat…

基于Koa实现的服务端渲染 ✅

前段时间刚写完毕业论文&#xff0c;现在一上来就是“基于”&#xff0c;哈哈。&#x1f92f; 这篇文章持续更新&#xff0c;涉及到的技术栈是Koa、Vue和Vite &#xff08;用React手搓服务端渲染好麻烦&#xff09;。但是现在能上生产的服务端渲染估计是Next&#xff08;配合Re…

Linux运维——Vim基础

Vim基础 一、移动光标1.1、基础移动1.2、屏幕滚动 二、编辑操作2.1、插入模式2.2、删除与修改2.3、复制粘贴 三、搜索与替换3.1、搜索3.2、替换 4、分屏与窗口管理4.1、分屏操作4.2、窗口调整 五、宏与批量操作六、效率技巧七、操作符7.1、内置操作符7.2、操作符 文本对象&…