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

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++))
doecho "第$sum个奖励${jiangli[$sum-1]}是由${name[$sum-1]}颁发的"
done
fi

效果如下:

在这里插入图片描述

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

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

相关文章

C#实现只保存2天的日志文件

文章目录 业务需求代码运行效果 欢迎讨论&#xff01; 业务需求 在生产环境中&#xff0c;控制台窗口不便展示出来。 为了在生产环境中&#xff0c;完整记录控制台应用的输出&#xff0c;选择将其输出到文件中。 但是&#xff0c;存储所有输出的话会占用很多空间&#xff0c;…

03 Python进阶:MySQL - mysql-connector

mysql-connector安装 要在 Python 中使用 MySQL 数据库&#xff0c;你需要安装 MySQL 官方提供的 MySQL Connector/Python。下面是安装 MySQL Connector/Python 的步骤&#xff1a; 首先&#xff0c;确保你已经安装了 Python&#xff0c;如果没有安装&#xff0c;可以在 Python…

AR/VR技术对制造业劳动力危机的影响

借助 AR/VR 的力量缩小现代制造业的技能差距 数字化转型仍然是企业的首要任务&#xff0c;其许多方面都需要人工干预。然而&#xff0c;推动此类举措所需的技术工人日益短缺。这就造成了我们所说的“制造业劳动力危机”。 制造业应当如何&#xff1a; 制造业用工危机正在影响…

JAVAEE之Cookie/Session

1.Cookie HTTP 协议自身是属于 "无状态" 协议. "无状态" 的含义指的是: 默认情况下 HTTP 协议的客户端和服务器之间的这次通信, 和下次通信之间没有直接的联系. 但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的. 例如登陆网站成功后, 第二…

Qt使用opencv,进行视频录制,功能打开、关闭摄像头,开始、结束录制视频,暂停、继续录制,并保存视频文件

1.效果图 2 代码实现 2.1 .h文件 #ifndef VIDEORECORDWIDGET_H #define VIDEORECORDWIDGET_H#include <QWidget>#include<QFileDialog>#include <QImage> #include <QLabel> #include <QTimer> #include <opencv2/opencv.hpp>using name…

面试题:JVM 调优

一、JVM 参数设置 1. tomcat 的设置 vm 参数 修改 TOMCAT_HOME/bin/catalina.sh 文件&#xff0c;如下图 JAVA_OPTS"-Xms512m -Xmx1024m" 2. springboot 项目 jar 文件启动 通常在linux系统下直接加参数启动springboot项目 nohup java -Xms512m -Xmx1024m -jar…

智慧展览馆:基于AI智能识别技术的视频智慧监管解决方案

一、建设背景 随着科技的不断进步和社会安全需求的日益增长&#xff0c;展览馆作为展示文化、艺术和科技成果的重要场所&#xff0c;其安全监控系统的智能化升级已成为当务之急。为此&#xff0c;旭帆科技&#xff08;TSINGSEE青犀&#xff09;基于视频智能分析技术推出了展览馆…

内存和网卡压力测试

1.内存压力测试 1.1测试目的 内存压力测试的目的是评估开发板中的内存子系统性能和稳定性&#xff0c;以确保它能够满足特定的应用需求。开发板通常用于嵌入式系统、物联网设备、嵌入式智能家居等场景&#xff0c;这些场景对内存的要求通常比较高。 其内存压力测试的主要目的…

Spark 的结构化 APIs——RDD,DataFrame, Dataset, SparkSQL 使用和原理总结

文章目录 前言RDD的底层是什么?结构化 Spark主要优点和好处 DataFrame APISpark的基本数据类型Spark的结构化和复杂数据类型Schemas 和创建 DataFramesColumns 和 ExpressionsRows通用的 DataFrame 算子 The Dataset API有类型 Objects、无类型 Objects 和通用 Rows创建 Datas…

银行数字化转型导师坚鹏:银行数字化转型必知的3大客户分析维度

银行数字化转型需要进行客户分析&#xff0c;如何进行客户分析呢&#xff1f;银行数字化转型导师坚鹏认为至少从客户需求分析、客户画像分析、客户购买行为分析3个维度进行客户分析。 1.客户需求分析 银行数字化转型需要了解客户需求&#xff0c;不同年龄段的客户有不同的需求…

RisingWave 在品高股份 Bingo IAM 中的应用

背景介绍 公司背景 品高股份&#xff0c;是国内专业的云计算及行业信息化服务提供商。公司成立于 2003 年&#xff0c;总部位于广州&#xff0c;下设多家子公司和分公司&#xff0c;目前员工总数近 900 人&#xff0c;其中 80 %以上是专业技术人员。 品高股份在 2008 年便开…

AcWing 4405. 统计子矩阵:做题笔记

目录 暴力思路 代码 前缀和双指针 代码 解释 推荐博客 这道题的主要思路就是枚举所有的子矩阵&#xff0c;判断符合条件的子矩阵的个数。 暴力思路 我服了&#xff0c;其实我最开始没有想到 &#xff1a;枚举所有的子矩阵 这样一个很有总结性的要点。 我是想着哦我先…

【深度学习|Pytorch】torchvision.datasets.ImageFolder详解

ImageFolder详解 1、数据准备2、ImageFolder类的定义transforms.ToTensor()解析 3、ImageFolder返回对象 1、数据准备 创建一个文件夹&#xff0c;比如叫dataset&#xff0c;将cat和dog文件夹都放在dataset文件夹路径下&#xff1a; 2、ImageFolder类的定义 class ImageFol…

【系统架构师】-软件架构评估

1、质量属性 1、性能 系统的响应能力&#xff0c;响应时间、吞吐量&#xff0c; 策略&#xff1a;优先级队列、资源调度 2、可用性 系统正常运行的时间比例&#xff08;两次故障之间的时间长度&#xff09;&#xff0c;故障间隔时间&#xff0c; 策略&#xff1a;冗余、心…

AI预测福彩3D第26弹【2024年4月4日预测--第4套算法重新开始计算第11次测试】

今天清明节假日&#xff0c;一会要外出&#xff0c;可能要晚点回来。咱们尽早先把预测数据跑完&#xff0c;把结果发出来供各位彩友参考。合并下算法&#xff0c;3D的预测以后将重点测试本套算法&#xff0c;因为本套算法的命中率较高。以后有时间的话会在第二篇文章中发布排列…

UniApp 应用发布到苹果商店指南

&#x1f680; 想要让你的 UniApp 应用在苹果商店亮相吗&#xff1f;别着急&#xff0c;让我来带你一步步完成这个重要的任务吧&#xff01;在这篇博客中&#xff0c;我将详细介绍如何将 UniApp 应用顺利发布到苹果商店&#xff0c;让你的应用跻身于苹果生态之中。 引言 &…

2024年泰迪杯数据挖掘B题详细思路代码文章教程

目前b题已全部更新包含详细的代码模型和文章&#xff0c;本文也给出了结果展示和使用模型说明。 同时文章最下方包含详细的视频教学获取方式&#xff0c;手把手保姆级&#xff0c;模型高精度&#xff0c;结果有保障&#xff01; 分析&#xff1a; 本题待解决问题 目标&#…

Linux基础篇:VMware centos7虚拟机网络配置——桥接模式

VMware centos7虚拟机网络配置——桥接模式 1 搞清楚什么是桥接模式 桥接模式允许虚拟机直接连接到物理网络&#xff0c;就像它是物理网络中的一个独立设备一样。在这种模式下&#xff0c;虚拟机将具有与宿主机相同网络中的其他设备相同的网络访问权限。虚拟机将获得一个独立…

css心跳动画

图标引入 <img class"icon" src"heart.svg" alt"" srcset""> CSS代码 <style>.icon {animation:bpm 1s linear,pulse 0.75s 1s linear infinite;}keyframes pulse {from,75%,to {transform: scale(1);}25% {transform:…

RocketMQ(版本4.9.4)+RocketMQ_Dashbord环境搭建(生产者、消费者的前置环境搭建)

一、官方网站下载 RocketMQ源码包 https://rocketmq.apache.org/zh/docs/4.x/introduction/02quickstart 二、把rocketMQ上传到Linux环境下解压&#xff0c;编译&#xff0c;执行以下命令&#xff08;需要提前装jdk和maven并配置好环境变量&#xff09; unzip rocketmq-all-4…