【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]
👨🎓博主简介
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 🍁 if 判断
- 🍁 if 判断格式:
- 🍁 if 判断实例:
- 🍃 单条件判断实例:判断是否为整数
- 🍃 多条件判断实例:成绩及格否
- 🍁 for 循环
- 🍁 for 循环格式:
- 🍁 for 循环实例:
- 🍃 需求1:打印10以内的偶数-->能被2整除,除2余数为0
- 🍃 需求2:循环创建文件cs{1..100}
- 🍃 需求3:从变量中取遍历的值
- 🍃 需求4:从命令中取值
- 🍃 需求5:for循环自增自减
- 🍃 需求5.1:批量创建cs1-cs10用户
- 🍃 需求5.2:输出数字 a 自增、 a自增、 a自增、b自减
- 🍃 需求5.3:循环20次zabbix调用
- 🍃 需求6:批量创建用户,密码默认为123456
- 🍁 while 循环
- 🍁 while 循环格式:
- 🍁 while 循环实例:
- 🍃 需求1:计算1到100正整数的和
- 🍃 需求2:批量创建用户,密码默认为123456
- 🍃 需求3:提示用户输入字符,如果是小写就把字母全部变为大写,如果是quit则退出脚本
- 🍃 需求4:无限循环执行zabbix_get调用命令
- 🍁 case 循环判断
- 🍁 case 循环判断格式:
- 🍁 case 循环判断实例:
- 🍃 nginx服务启停脚本:函数 + case
- 相关文章:
🍁 if 判断
🍁 if 判断格式:
#单条件判断
if 条件测试;then执行代码
fiif 条件测试;then执行代码
eles执行代码
fi#多条件判断
if 条件测试;then执行代码
elif 条件测试;then执行代码
eles执行代码
fi
🍁 if 判断实例:
🍃 单条件判断实例:判断是否为整数
#!/bin/bashread -p "please input a number:" numexpr 10 + $num &>/dev/null
if [ $? -eq 0 ];thenecho "${num}是整数"
elseecho "${num}不是整数"
fi
🍃 多条件判断实例:成绩及格否
对输入成绩做判断:
如果成绩小于60;那么打印不及格
如果60>=成绩<80;那么打印及格
如果80>=成绩<90;那么打印良好
如果90>=成绩<=100;那么打印优秀
否则请输入0-100的整数
结尾
#!/bin/bashread -p "please input is results:" results
expr 10 + $results &>/dev/null
if [ $? -ne 0 ];thenecho "${results}不是合法整数"exit 1
fi
if [ ${results} -lt 60 ];thenecho "不及格"
elif [ ${results} -ge 60 ] && [ ${results} -lt 80 ];thenecho "及格"
elif [ ${results} -ge 80 ] && [ ${results} -lt 90 ];thenecho "良好"
elif [ ${results} -ge 90 ] && [ ${results} -le 100 ];thenecho "优秀"
elseecho "请输入0-100之间合法的整数,您输入的是:${results}"
fi
🍁 for 循环
🍁 for 循环格式:
for 变量 in 取值列表;do执行代码
donefor 变量 in 取值列表
do执行代码
donefor (( i=1;i<20;i++ ));do执行代码;(表示循环20次执行代码)
done
取值列表中的值都将被历遍
🍁 for 循环实例:
🍃 需求1:打印10以内的偶数–>能被2整除,除2余数为0
#!/bin/bash#{起始数字..终止数字..步长} 默认步长为1
for i in {2..10..2};doecho $i
done
continue 跳过当前循环
break 终止当前循环
exit 退出脚本,同时可以指定退出时的状态码
seq [起始位置(不指定默认是1)] 终止位置
-s 指定分隔符
-w 补齐相同宽度
🍃 需求2:循环创建文件cs{1…100}
#!/bin/bash#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )text=$DIR/for[ ! -d $text ] && mkdir $textfor I in {1..100};dotouch ${text}/cs$I
done#其实直接用touch也可以创建,这里只为了演示
#touch cs{1..100}
#会在当前目录创建cs{1..100}文件
🍃 需求3:从变量中取遍历的值
#!/bin/bashList="file1 file2 file3"
for I in $List;doecho "当前文件为 ${I}"
done
🍃 需求4:从命令中取值
#!/bin/bashfor I in $(cat /etc/passwd)
doecho "$I"
done
🍃 需求5:for循环自增自减
🍃 需求5.1:批量创建cs1-cs10用户
#!/bin/bashfor (( i=1;i<=10;i++ ));douseradd cs_$i
done
如果需要删除这些用户,可在脚本中把useradd
改为userdel -r
即可;
🍃 需求5.2:输出数字 a 自增、 a自增、 a自增、b自减
#!/bin/bashfor (( a=1,b=9;a<=10;a++,b-- ));doecho "num is $a $b"
done
a的初始值为1;b的初始值为9;
a在前,所以写a最大不能>10;
a每次加1,直至加到10;b每次-1,直至a停止。
🍃 需求5.3:循环20次zabbix调用
#!/bin/bashfor (( i=1;i<=20;i++ ));docs=$(zabbix_get -s 172.16.10.1 -k cs)echo "调用$i次!调用结果为:$cs"echo "------------------------------------------------------------------------"
done
🍃 需求6:批量创建用户,密码默认为123456
#!/bin/bash#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )#创建一个用户组
groupadd mailgroup 2>/dev/nullfor i in $(cat $DIR/a.txt);douseradd -g mailgroup -s /sbin/nologin $i 2>/dev/nullecho 123456 | passwd --stdin $i
done
a.txt 中名字可以随便起;
🍁 while 循环
🍁 while 循环格式:
while [条件测试];do执行代码
donewhile [条件测试]
do执行代码
donewhile true;do执行代码(无限循环此命令,每次循环停留两秒)sleep 2
done
条件测试比如:$i -le 5
当条件成立时,执行循环,不成立,结束循环。
如果while中的条件永远成立,会一直循环,成为死循环。
🍁 while 循环实例:
🍃 需求1:计算1到100正整数的和
#!/bin/bashdeclare -i I=1declare -i SUM=0while [ $I -le 100 ]; dolet SUM+=$Ilet I++
doneecho "$SUM"
在执行脚本时加个 -x
可查看执行过程
🍃 需求2:批量创建用户,密码默认为123456
#!/bin/bash#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )#创建一个用户组
groupadd mailgroup 2>/dev/nullwhile read username; douseradd -g mailgroup -s /sbin/nologin $username 2>/dev/nullecho 123456 | passwd --stdin $username
done < $DIR/username.txt
username.txt
lcy
cs
abc
abb
abd
abe
abf
批量删除用户
#!/bin/bash#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )#创建一个用户组
groupadd mailgroup 2>/dev/nullcat $DIR/username.txt | while read username; douserdel -r $username
done
🍃 需求3:提示用户输入字符,如果是小写就把字母全部变为大写,如果是quit则退出脚本
#!/bin/bash#如果输入的不是quit则把小写字母全部换成大写字母,如果输入的是quit则退出循环,否则会一直循环;
read -p "Please enter content:" SCRIPTwhile [ $SCRIPT != "quit" ]; doecho "$SCRIPT" | tr 'a-z' 'A-Z'read -p "Please enter content:" SCRIPT
done
字母写的小写,全部会替换为大写,数字和其他字符不会被替换;
🍃 需求4:无限循环执行zabbix_get调用命令
#!/bin/bashwhile true;docs=$(zabbix_get -s 172.16.10.1 -k cs)echo "结果为$cs"echo "----------------------------------------"sleep 2
done
🍁 case 循环判断
🍁 case 循环判断格式:
case 变量 in条件或值1)执行代码
;;条件或值2)执行代码
;;条件或值3)执行代码
;;*)执行代码
esac
🍁 case 循环判断实例:
🍃 nginx服务启停脚本:函数 + case
#!/bin/bashngstart (){/usr/local/nginx/sbin/nginx
}ngstop (){/usr/local/nginx/sbin/nginx -s stop
}ngrestart (){/usr/local/nginx/sbin/nginx -s reload
}ngstatus (){/usr/local/nginx/sbin/nginx -s status
}#nginx服务器起停的脚本case $1 instart)echo "启动nginx服务"ngstart
;;stop)echo "关闭nginx服务"ngstop
;;restart)echo "重启nginx服务"
# $0 stop
# $0 startngrestart
;;status)echo "查看nginx服务状态"ngstatus
;;*) echo "USage: /etc/init.d/nginx {start|stop|restart}"
esac
推荐一个使用case写的启动脚本,包含启动,停止及重启监测状态:linux启动、关闭、重启jar包shell脚本
相关文章:
文章名 | 文章地址 |
---|---|
【Linux】 shell脚本的创建及使用 《入门到实践》详解[⭐建议收藏!!⭐] | https://liucy.blog.csdn.net/article/details/130111812 |
【Linux】Shell脚本之函数的操作+实战详解[⭐建议收藏!!⭐] | https://liucy.blog.csdn.net/article/details/130387377 |
【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐] | https://liucy.blog.csdn.net/article/details/130387523 |
相关文章:

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...

【数据结构】“栈”的模拟实现
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

12 注册登录
12 注册登录 整体概述 使用数据库连接池实现服务器访问数据库的功能,使用POST请求完成注册和登录的校验工作。 本文内容 介绍同步实现注册登录功能,具体涉及到流程图、载入数据库表、提取用户名和密码、注册登录流程与页面跳转的代码实现。 流程图&a…...
动态规划之最长上升子序列模板
今天开始更新动态规划的模板(动态规划哪有模板呀!!!)话是这么说,但我们经常做题会发现有些题目有些共性,我们抽取共性总结出来,应付动态规划基础题目还是可以的。 回归正题…...

Python源码05:使用Pyecharts画词云图图
**Pyecharts是一个用于生成 Echarts 图表的 Python 库。Echarts 是一个基于 JavaScript 的数据可视化库,提供了丰富的图表类型和交互功能。**通过 Pyecharts,你可以使用 Python 代码生成各种类型的 Echarts 图表,例如折线图、柱状图、饼图、散…...
MariaDB 10.11.4 安装教程(zip格式,Windows环境)
前言 MariaDB 10.11.4 这个版本是目前最新的长期支持版,下面来安装下 下载 官网:MariaDB 10.11.4 打开上面链接,点Download 安装 解压缩下载的 zip 文件,到 bin 目录,管理员运行cmd,执行如下命令 mys…...
【Python国内源】pip换源终极方法【Windows】
1、为什么要pip换源下载 安装第三方库时,很多库来自于国外,下载速度慢得感人! 2、常见的国内源 https://pypi.tuna.tsinghua.edu.cn/simple #清华 http://mirrors.aliyun.com/pypi/simple/ #阿里云 https://pypi.mirrors.ustc.e…...

【elementUi】绘制自定义表格、绘制曲线表格
要求绘制下图系列表格: 实现步骤: 1.绘制树,实现树勾选字段—>表格绘制字段 逻辑: 树:check-change“treeChart.handleCheckChange” 绑定点击选择事件,改变data.column3数据项;表格:columns"data…...

使用 Python 中的 Langchain 从零到高级快速进行工程
大型语言模型 (LLM) 的一个重要方面是这些模型用于学习的参数数量。模型拥有的参数越多,它就能更好地理解单词和短语之间的关系。这意味着具有数十亿个参数的模型有能力生成各种创造性的文本格式,并以信息丰富的方式回答开放式和挑战性的问题。 ChatGPT 等法学硕士利用 T...
神经网络基础-神经网络补充概念-07-使用计算图求导
步骤 定义计算节点和操作: “x” 是输入变量。 “Add” 表示加法操作。 “Sub” 表示减法操作。 “Multiply” 表示乘法操作。 计算函数值: 首先,我们将 x0 的值代入计算图中,计算出函数的值。 反向传播计算导数: 我…...
docker常用指令
一、Docker指令 1、启动Docker :systemctl start docker 2、查看Docker状态:systemctl status docker 状态为active表示正在运行中 3、停止运行Docker:systemctl stop docker 4、重启Docker:systemctl restart docker 5、开机启动Docker:systemctl enable docker 二…...

【金融量化】对企业进行估值的方法有哪些?
估值的方法有哪些? 如何对企业进行估值?有2个方法估算。 1 绝对估值法 它是一种定价模型,用于计算企业的内在价值。 比如说你可以根据公司近N年的现金流情况。借此去预测未来N年的现金流情况。所有的现金流数据都可以在年报上查询到。最后…...

Qt+C++自定义控件仪表盘动画仿真
程序示例精选 QtC自定义控件仪表盘动画仿真 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对<<QtC自定义控件仪表盘动画仿真>>编写代码,代码整洁,规则&…...

怎样让音频速度变慢?请跟随以下方法进行操作
怎样让音频速度变慢?在会议录音过程中,经常会遇到主讲人语速过快,导致我们无法清晰听到对方说的内容。如果我们能够减慢音频速度,就能更好地记录对方的讲话内容。此外,在听到快速播放的外语或方言时,我们也…...
【C语言】常用的库和作用以及对应的函数
常规编程时: <stdio.h>:提供标准输入输出函数,例如printf、scanf、fprintf、fscanf等。 <stdlib.h>:提供常用的通用函数,例如内存管理函数(malloc、calloc、realloc、free)、随机数…...
Android 12.0 系统systemui下拉通知栏的通知布局相关源码分析
1.前言 在android12.0的系统rom开发中,在进行systemui中的下拉通知栏的布局自定义的时候,对于原生systemui的 系统的下拉通知栏的通知布局的了解也是非常重要的,接下来就来分析下相关的下拉通知栏的通知布局的相关 源码流程,了解这些才方便对通知栏的布局做修改 2.系统sy…...

java实现docx,pdf文件动态填充数据
一,引入pom 根据需求引入自己所需pom org.apache.poi poi 4.1.1 org.apache.poi poi-ooxml 4.1.1 org.jxls jxls 2.6.0 ch.qos.logback logback-core org.jxls jxls-poi 1.2.0 fr.opensagres.xdocreport fr.opensagres.xdocreport.core 2.0.2 fr.opensagres.xdocrep…...
【Python2】实现异步进程的创建、终止与资源回收
章节索引 前言〇、问题与难点一、进程、异步进程、线程 / 进程池二、最终的代码构成三、代码逻辑讲解四、扩展的知识后记 前言 由于业务需求,需要在服务中加入一个异步任务,执行大量的耗时计算操作,需求细节如下: Handler处理器…...
leetcode做题笔记79单词搜索
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相…...

http库 之 OKHttpUtil
源码位置 方便实用,个人感觉不错 依赖 <dependency><groupId>io.github.admin4j</groupId><artifactId>common-http-starter</artifactId><version>0.7.5</version> </dependency>代码实践 /*** 通用http的pos…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...