Linux中的shell脚本之流程控制循环遍历

news2024/10/11 16:27:05

3 条件判断

在这里插入图片描述

4 流程控制语句

1)if 语句

案例,用户输入用户名和密码,判断用户名是否是admin,密码是否是123,如果正确,则显示登录成功

首先我创建了shell文件,touch getpawer 其中getpawer 是我自己命的名

#!/bin/bash
read -p "请输入账号:" uname
n=$uname
read -p "请输入密码:" upwd
m=$upwd
if (("n"=="admin" && "m"=="123"))
then echo "登录成功"
else echo "登录失败"
fi

效果展示如下:

[root@localhost ~]# vi getpawer
[root@localhost ~]# sh getpawer
请输入账号:451
请输入密码:31031
登录失败
[root@localhost ~]# sh getpawer
请输入账号:admin
请输入密码:123
登录成功
[root@localhost ~]# admin
-bash: admin: command not found
[root@localhost ~]# sh getpawer
请输入账号:admin
请输入密码:321
登录失败

2)case语句:用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令

# 基础语法
case 变量 in1)
语句1 ;;2)
语句2 ;;
esac # 用于结束case语句,case反过来就是esac

案例,判断某个月份是多少天

#!/bin/bash
read -p "请输入要查询的月份:" month
echo "你要查询的月份是:$month月"
case $month in
1|3|4|7|8) echo "$month月有31天";;
4|6|9|11|12) echo "$month月有30天";;
2) echo "$month月有28天";;
esac

效果如下:

[root@localhost ~]# vi getday
[root@localhost ~]# sh getday
请输入要查询的月份:3
你要查询的月份是:3月
3月有31天

3)for循环

一个案例来了解语法,送出10次玫瑰花

#!/bin/bash
flowers=( "第1" "第2" "第3" "第4" "第5" "第6" "第7" "第8" "第9" "第10")
for n in ${flowers[*]}
do
echo "我喜欢你,这是我送你的第$n朵玫瑰花"
done

效果展示:

[root@localhost ~]# sh getflower
我喜欢你,这是我送你的第第1朵玫瑰花
我喜欢你,这是我送你的第第2朵玫瑰花
我喜欢你,这是我送你的第第3朵玫瑰花
我喜欢你,这是我送你的第第4朵玫瑰花
我喜欢你,这是我送你的第第5朵玫瑰花
我喜欢你,这是我送你的第第6朵玫瑰花
我喜欢你,这是我送你的第第7朵玫瑰花
我喜欢你,这是我送你的第第8朵玫瑰花
我喜欢你,这是我送你的第第9朵玫瑰花
我喜欢你,这是我送你的第第10朵玫瑰花

升级版:

#!/bin/bash
flowers=( "牡丹花" "玫瑰花" "桂花" "兰花" "梅花" "太阳花" "水仙花" "茉莉花" "小米花" "大红花")
sum=0
for i in ${flowers[*]} # 从数组中去出所有元素
do
sum=$(($sum+1))  
        echo "我喜欢你,送你的第$sum朵花是$i"
done

效果如下:

[root@localhost ~]# sh getflower1
我喜欢你,送你的第1朵花是牡丹花
我喜欢你,送你的第2朵花是玫瑰花
我喜欢你,送你的第3朵花是桂花
我喜欢你,送你的第4朵花是兰花
我喜欢你,送你的第5朵花是梅花
我喜欢你,送你的第6朵花是太阳花
我喜欢你,送你的第7朵花是水仙花
我喜欢你,送你的第8朵花是茉莉花
我喜欢你,送你的第9朵花是小米花
我喜欢你,送你的第10朵花是大红花

4)while 循环

语法:

​ while 循环条件

​ do

​ 循环语句

​ done

案例:输出10次为梦想而战

#!/bin/bash
i=1 # 循环参数从1开始
while(($i<=10)) # 只有i<=10的时候程序才会向下执行
do
i=$(($i+1))  # 每执行一次i的值就加一,是为了当i=11时就停止,也就实现了循环10次
echo "为梦想而战!!!"
done

效果如下:

[root@localhost ~]# sh shell1
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!
为梦想而战!!!

综合案例,用户输入自己的考试成绩,当成绩低于60,计算出距离60分的差距,并提示用户有2个选择,选择1是放弃,转专业,选择后弹出5句,别灰心,三百六十行行行出状元,当选择2时,是继续坚持备考下一次测试,并弹出5句,帅哥,你坚持的样子很酷,选择3时则提示,选择无效,请重新选择。当输入成绩大于60,则弹出,颁奖开始:第一个奖品本子是由蔡老师颁发,第二个本子是由王老师颁发…。

代码展示如下:

#!/bin/bash
read -p "请输入你的专业成绩:" grade
n=$grade
if (("$n"<"60"))
then
fs=$((60-$n))
echo "$fs"
echo "你的成绩是$n,离及格成绩60分还差$fs分"
echo "选择操作1:不再继续,我要转专业"
echo "选择操作2:我要继续战斗,下次考试一定及格"
read -p "请输入你的选择(1or2):" m
xz=$m
echo "你的选择是:$xz"
case $xz in
1) echo "你的选择是:不再继续,想要转专业,送你5句话"
i=1
while(($i<=5))
do
i=$(($i+1))
echo "别灰心,三百六十行,行行出状元"
done;;
2) echo "你的选择是:继续坚持备考下一次测试,送你5句话"
q=1
while(($q<=5))
do
q=$(($q+1))
echo "帅哥,你坚持的样子很酷!!!"
done;;
3) echo "选择无效,请重新选择"
esac
else
echo "专业成绩及格,现在由老师们给你颁发奖品:"
name=("蔡老师" "王老师" "刘老师" "李老师")
jiangli=("本子" "钢笔" "电脑" "鼠标")
lengh=${#name[@]}
for ((sum=1; sum <=$lengh ; sum++))
do
 echo "第$sum个奖励${jiangli[$sum-1]}是由${name[$sum-1]}颁发的"
done
fi

效果如下:

在这里插入图片描述

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

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

相关文章

基于SpringBoot的药品管理系统设计与实现

介绍 药品管理员&#xff1a; 登录、退出、药品信息录入、药厂信息录入、采购人信息录入、药品信息浏览、药厂信息浏览、采购人信息浏览、药品信息查询入库修改删除、药信息查询修改删除采购人信息查询修改删除、入库记录浏览出库记录浏览、系统帮助 取药处人员: 登录、退出、…

[源码] Android 上的一些快捷方式,如通知、快捷方式等

目录 一、通知0. 配置权限1. 测试发送通知代码2. 打开通知设置界面代码3. 前台服务创建常驻通知 二、快捷方式1. 测试添加动态快捷方式代码 三、开发者图块四、桌面小部件 基于jetpack compose 框架的使用代码 一、通知 参见 官方文档 0. 配置权限 <uses-permission andr…

Matlab梁单元有限元编程:铁木辛柯梁VS欧拉梁

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

PTA题解 --- 天梯赛的赛场安排(C语言)

今天是PTA题库解法讲解的第八天&#xff0c;今天我们要讲解天梯赛的赛场安排&#xff0c;题目如下&#xff1a; 解题思路&#xff1a; 这个问题的关键在于高效地为参赛学校的队员分配赛场&#xff0c;同时满足给定的条件。我们可以通过以下步骤解决这个问题&#xff1a; 存储每…

[C#]OpenCvSharp使用HoughCircles霍夫圆检测算法找出圆位置并计数

【效果展示】 原图&#xff1a; 找出位置&#xff1a; 【测试环境】 vs2019,netframework4.7.2,opencvsharp4.8.0 【函数用法】 cv2提供了一种圆检测的方法&#xff1a;HoughCircles。该函数的返回结果与参数设置有很大的关系。 检测的图像时9枚钱币&#xff0c;分别使用了…

fiverr是什么?fiverr续费订阅充值教程?

一、什么是Fiverr Fiverr是国际上非常有名的自由职业在线平台&#xff0c;汇聚了大大小小200多个类别的超过80万的自由职业者&#xff0c;网站用户活跃度非常高&#xff0c;发展至今也已经成为一个全球性外包服务平台。Fiverr最初是由Micha Kaufman和Shai Wininger于2010年创立…

注意力机制篇 | YOLOv8改进之添加LSKAttention大核卷积注意力机制 | 即插即用,实现有效涨点

前言:Hello大家好,我是小哥谈。LSKAttention是一种注意力机制,它在自然语言处理领域中被广泛应用。LSKAttention是基于Transformer模型中的Self-Attention机制进行改进的一种变体。在传统的Self-Attention中,每个输入序列中的元素都会与其他元素进行交互,以获取全局的上下…

fastadmin学习08-查询数据渲染到前端

index.php查询&#xff0c;这个是前台的index.php public function index() {$slideImgs Db::name("slideimg")->where("status",,normal)->limit(5)->order(sort,desc)->select();$productList Db::name("product")->where(…

AI绘画:Stable Diffusion的高效操作界面,ComfyUI:安装和使用篇

前言 Stable Diffusion&#xff08;简称SD&#xff09;是一款强大的AI绘画工具&#xff0c;通常通过Web UI操作界面进行使用。然而&#xff0c;对于那些寻求更高效率和个性化工作流的用户来说&#xff0c;ComfyUI提供了一个基于节点流程的操作界面&#xff0c;使得工作流定制更…

【现代控制】线代基础

连续系统 连续系统状态空间离散化 其中&#xff1a;

Go——函数

一. 函数定义 1.1 特点 无需声明原型支持不定变参支持多返回值支持命名返回参数支持匿名函数和闭包函数也是一种类型&#xff0c;一种函数可以赋值给变量不支持嵌套&#xff0c;一个包不能有两个名字一样的函数不支持重载不支持默认参数 1.2 函数声明 函数声明包含一个函数名&…

【ESP32S3 Sense接入语音识别+MiniMax模型+TTS模块语音播报】

【ESP32S3 Sense接入语音识别MiniMax模型TTS模块语音播报】 1. 前言2. 功能模块概述2.1 语音接入2.2 大模型接入2.3 TTS模块接入 3. 先决条件3.1 环境配置3.2 所需零件3.3 硬件连接步骤 4. 核心代码4.1 源码分享4.2 代码解析 5. 上传验证5.1 对话测试5.2 报错 6. 总结 1. 前言 …

Zabbix6 - Web管理网络拓扑/端口流量监控配置手册

Zabbix6 - Web管理网络拓扑/端口流量监控配置手册 概述: 1)Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 Zabbix由两部分构成,Zabbix Server与可选组件Zabbix Agent。通过C/S模式采集数据,通过B…

element-ui divider 组件源码分享

今日简单分享 divider 组件&#xff0c;主要有以下两个方面&#xff1a; 1、divider 组件页面结构 2、divider 组件属性 一、组件页面结构 二、组件属性 2.1 direction 属性&#xff0c;设置分割线方向&#xff0c;类型 string&#xff0c;horizontal / vertical&#xff0…

《QT实用小工具·九》设备按钮控件

1、概述 源码放在文章末尾 该项目实现了设备按钮控件&#xff0c;主要包含如下功能&#xff1a; 可设置按钮样式 圆形、警察、气泡、气泡2、消息、消息2。可设置按钮颜色 布防、撤防、报警、旁路、故障。可设置报警切换及对应报警切换的颜色。可设置显示的防区号。可设置是否…

【多线程】震惊~这是我见过最详细的ReentrantLock的讲解

一.与synchronized相比ReentrantLock具有以下四个特点: 可中断&#xff1a;synchronized只能等待同步代码块执行结束&#xff0c;不可以中断&#xff0c;强行终断会抛出异常, 而reentrantlock可以调用线程的interrupt方法来中断等待&#xff0c;继续执行下面的代码。 在获取锁…

学浪m3u8视频解密

学浪的m3u8中的key进行了加密&#xff0c;而且还是难度比较高的vmp&#xff0c;为了让非程序专业用户能够下载学浪的视频&#xff0c;这里将学浪key解密和学浪获取课程集成在一个软件 小浪助手:专门下载学浪视频而生 小浪助手我打包在一起 链接&#xff1a;https://pan.baid…

【信号处理】基于变分自编码器(VAE)的图片典型增强方法实现

关于 深度学习中&#xff0c;经常面临图片数据量较小的问题&#xff0c;此时&#xff0c;对数据进行增强&#xff0c;显得比较重要。传统的图片增强方法包括剪切&#xff0c;增加噪声&#xff0c;改变对比度等等方法&#xff0c;但是&#xff0c;对于后端任务的性能提升有限。…

Redis 主从复制,哨兵模式,集群

目录 主从复制 主从复制 作用 缺陷 主从复制流程 实现Redis主从复制 哨兵模式 主从复制切换的缺点 哨兵的核心功能 哨兵模式原理 哨兵模式的作用 哨兵结构组成 故障转移机制 主节点的选举 实现哨兵模式 集群(Cluster) redis群集有三种模式&#xff0c;主从复制…

解决PDF打开后显示名称与文档名称不一致的问题【不需要word模板!!!】

文章目录 简介原因解决办法参考资料 简介 最近&#xff0c;博主在使用Acobat打开一个PDF文件的时候发现&#xff1a;打开后的PDF文件标签跟该文件的存储名称不一致。这是一件令人并不十分愉快和顺心的事情&#xff0c;网上搜索得到的解决办法基本上都是出奇的相似&#xff0c;…