shell中的流程控制

条件判断在流程控制中的重要性

有了条件判断才能进行if判断即分支流程,才能进行case的多分支流程,才能进行for循环和while循环。

单分支流程判断

如上图所示,在shell编程中常使用英文状态下的分号来在Linux控制台一次性执行多条命令,这种一次性执行多条命令的格式与使用管道符来操作还不一样,

使用管道符来操作多条命令的话,每一条命令都需要去执行,但是如果使用分支语句和英文逗号的话,并不一定每一条命令都需要去执行。

单分支语句的执行顺序如上图所示,如果条件为真的话,就执行下面一条语句,如果条件为假的话,就跳过需要执行的语句,执行下一条语句。

如上图所示,先执行cd /home/atguigu/ 再执行ls -l 

这样的操作形式常用于if [ 需要判断的条件语句 ] ; then echo OK ; fi

即如果 [ 需要判断的条件语句 ]为真的话,就去执行then与fi之间的语句,如果 [ 需要判断的条件语句 ]为假的话,就跳过then 与fi之间的语句,去执行下一条语句。

这样if [ 需要判断的条件语句 ] ; then 条件为真的时候执行的语句; fi     的语句,即每一条命令并不是一定要去执行。

如上图所示,当我们在脚本中编写分支语句的时候,就需要使用字符串的一个拼接的操作,

因为在实际调用脚本的时候可能要传入的参数为空,这时因为向表达式中传入的参数为空就会报错,所以要进行如上图的·字符串的拼接的操作。

如上图所示,在编写脚本之后,记得使用chmod +x 脚本名称,给脚本加上可执行的权限,当然这里不指定属主,属组,其他用户的话,就默认给全部用户加上对此文件的可执行权限。

如上图所示,是将分支语句跟逻辑与和逻辑或结合起来的语句操作。

if [ $a -gt 18 ] && [ $a -lt 35 ]; then echo OK;fi

如上图所示,if [ $a -gt 18 ] && [ $a -lt 35 ]; 条件为真的话,就执行then 之间的语句  fi  

如果条件为假,就不进行输出打印的操作。

if [ $a -gt 18 -a $a -lt 35 ];表示判断这个参数的数值是否在[ $a -gt 18 -a $a -lt 35 ]区间内,如果在这个区间内就打印OK,如果不在这个区间内就不进行打印输出的操作,

if [ $a -gt 18 -o $a -lt 35 ];表示这个参数的数值满足上述两个条件就可以,就继续执行之后的then  fi 语句,

多分支流程判断

如上图所示,是一个多分支语句示例和一个单分支语句示例,在单分支中必须保证中括号中的不能为空,不然报错,即使不传入参数,也应该保证中括号内有字符,

在多分支语句中,

if [ $2 -lt 18 ]

then

    echo "未成年人"

else

    echo "成年人"

fi

如上所示,如果if中的条件为真的话,就执行then 语句一 否则的话就执行 else 语句二 fi

如上图所示,这是一个调用可执行脚本中的多分支语句的示例。

 

如上图所示,是一个多分支语句,

if [ 条件判断式 ]

then 

    程序

elif [条件判断式]

then 

    程序

else

    程序

fi

如上图所示,

if [ $2 - lt 18 ]

then 

    echo "未成年人"

elif [ $2 -lt 35 ]

then 

    echo "青年人"

elif [ $2 -lt 60 ]

then 

    echo "中年人"

else

    echo "老年人"

fi

如上图所示,在shell编程中的分支语句中每一个执行语句都需要使用then作为一个前提。

shell编程中的case语句

如上图所示,*)之后的语句表示default语句,即默认语句。

如上图所示,这是在shell编程中实际应用case语句的一个案例,

当输入脚本的参数是1时执行语句1,当输入脚本的参数是2时执行语句2,当输入脚本的参数是3时执行语句3,

当输入脚本的参数是意外情况时,就执行default语句,

shell编程中的for循环

对于for循环来说如果想进入for循环中就必须要使用一个条件判断,当条件判断为真时就进入循环,当条件判断为假时就不进入循环。

for循环中((初始值;循环控制条件;变量变化))

do

    程序

done

如上图所示,这是一个for循环示例,当在使用变量的时候必须要在变量的前面加上一个$f的符号,

即sum=$sum + $i但是此时在shell中加法是不能够直接去运用的必须要将这个加和的操作放在中括号内部。

可以在脚本的内部再加上一句echo $sum这样的语句,对最后的结果进行打印输出。

如上图所示,就是调用加和脚本并且对脚本传递参数的结果。

如上图所示,在shell编程中可以在双小括号中正常的使用一些数学上的符号。就不必使用那些复杂的-le这样的运算符了。

如上图所示,在shell编程中使用双小括号可以将数学上的符号正常使用,if ((表达式正确)); then 当表达式正确的时候需要执行语句 ; else 当表达式不正确的时候需要执行的语句。

如上图所示,是在shell中调用for循环的另外一种形式。

如上图所示,是对for循环的一个基本调用,

在shell中大括号的作用是表示一个序列,比如{1..100}这样的形式就表示1-100的序列。

如上图所示,是一个求和的for循环。

如上图所示,编写脚本赋予其执行权限,被引号引起来的$*和$@的作用是不同的,而没有被引号引起来的$*和$@的作用是相同的,都是将获取到的参数区分对待。

如上图所示,这是一个通过使用$*和$@来接收参数从而实现for循环的一个案例。

shell编程中的while循环

如上图所示,与for循环不同的是,在shell编程的while循环中,我们需要在while循环外面进行变量的初始化,在do    done之间进行变量的调整。

如上图所示,这是在使用for循环和while循环完成的1-100的加和,

首先在for循环中

for ((i=1; i <= $1; i++))

do 

    sum=$[ $sum + $i ]//在shell编程中如果想让数学运算符正常生效的话,就需要使用$[  ]如果想调用变量的话,就需要在变量名前面加上$的符号。

done

echo $sum

其次在while循环中

a=1

while [ $a -le $1 ]

do

    sum2=$[ $sum2 + $a ]

    a=$[ $a + 1 ]//对进入循环的变量的调整。

done

echo $sum2

如上图所示,这是一个实现1-100加和的while循环,

let sum2+=a 

let a++

这样let的操作就可以将shell编程中一些比较反人类的运算符的操作,简化一些。

read读取控制台的输入(交互式操作)

如上图所示,这是在创建一个交互式的输入,read -t表示等待用户等待的时间,

-p表示指定读取值时的提示符(这里的提示符可以用引号括起来):  接收参数的变量

echo $变量  对变量的打印输出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无线领夹麦克风哪个牌子好用?一文揭秘哪种领夹麦性价比最高!

​无线领夹麦克风&#xff0c;无疑是现代音频技术的杰出代表。它摆脱了传统有线麦克风的束缚&#xff0c;让声音的传播更加自由、灵活。无论是追求极致音质的音乐爱好者&#xff0c;还是需要高效沟通的商务人士&#xff0c;无线领夹麦克风都能满足你的需求&#xff0c;让你的声…

513、找二叉树左下角的值

题解&#xff1a;层序遍历简单&#xff0c;此篇记录递归法&#xff0c;要注意左下角的值并不一定是左叶子节点&#xff0c;遍历思路形象化就是按先左后右的顺序遍历每一条分支&#xff0c;若遍历到叶子结点&#xff0c;看此时深度有没有超过之前的值&#xff0c;超过了就记录下…

Jlink下载固件到RAM区

Jlink下载固件到RAM区 准备批处理搜索exe批处理调用jlink批处理准备jlink脚本 调用执行 环境&#xff1a;J-Flash V7.96g 平台&#xff1a;arm cortex-m3 准备批处理 搜索exe批处理 find_file.bat echo off:: 自动识别脚本名和路径 set "SCRIPT_DIR%~dp0" set &qu…

TIME_WAIT的危害

前言 该文章主要讨论下TIME_WAIT的存在意义和潜在危害&#xff0c;以及解决措施。 具体内容 首先看一下下面这幅图 这幅图来自《TCP IP详解卷1&#xff1a;协议 原书第2版中文》TCP状态变迁图。 TIME_WAIT存在意义 可靠的终止TCP连接。 保证让迟来的TCP报文有足够的时间被…

数据库 | 试卷四

1.数据库系统的特点是 数据共享、减少数据冗余、数据独立、避免了数据不一致和加强了数据保护 2.关系模型的数据结构是二维表结构 3.聚簇索引 cluster index 4. 这里B&#xff0c;C都是主属性&#xff0c;所以B->C不是非主属性对码的部分函数依赖 候选键&#xff08;AC&a…

光电液位传感器在净水器领域的应用优势有哪些?

光电液位传感器作为一种先进的液位检测技术&#xff0c;在净水器领域有着显著的应用优势。具有高精度的特点&#xff0c;能够精确地检测水位变化&#xff0c;保证水处理过程的稳定性和效率。 传统的浮球式传感器可能存在精度偏差或者在长期使用中需要维护和更换的问题&#xf…

nginx+tomcat负载均衡、动静分离群集【☆☆☆☆☆】

Nginx是一款非常优秀的HTTP服务器软件&#xff0c;性能比tomcat更优秀&#xff0c;它支持高达50 000个并发连接数&#xff0c;拥有强大的静态资源处理能力&#xff0c;运行稳定&#xff0c;内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的…

机器学习课程复习——隐马尔可夫

不考计算题 Q:概率图有几种结构? 条件独立性的公式? 顺序结构发散结构汇总结构Q:隐马尔可夫模型理解? 概念 集合:状态集合、观测集合 序列:状态序列、观测序列

你不知道的MySQL备份和还原技巧,速来学习!

01、mysql备份数据库 1、mysql备份单个数据库 #mysql备份某个库格式&#xff1a; mysqldump -h主机名 -P端口 -u用户名 -p"密码" --database 数据库名 > 文件名.sql#实例&#xff1a;mysql备份某个库&#xff1a; mysqldump -h10.*.*.9 -P3306 -uroot -p"密…

闹大了!高考作文“人工智能与AI”引发争议,专家喊话,部分考生家长无奈,直呼:“太不公平了!这哪里是考作文,分明是在考城乡差距啊!”

闹大了&#xff01;高考作文“人工智能与AI”引发争议&#xff0c;专家喊话&#xff0c;部分考生家长无奈&#xff0c;直呼&#xff1a;“太不公平了&#xff01;这哪里是考作文&#xff0c;分明是在考城乡差距啊&#xff01;” ​高考&#xff0c;本该是最公平的战场&#xff…

leetcode21 合并两个有序单链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[]示例…

YOLOv10改进 | 主干篇 | YOLOv10引入华为VanillaNet替换Backbone

1. VanillaNet介绍 1.1 摘要: 基础模型的核心是“越多越好”的理念,计算机视觉和自然语言处理领域取得的惊人成功就是例证。 然而,优化的挑战和变压器模型固有的复杂性要求范式向简单性转变。 在这项研究中,我们介绍了 VanillaNet,一种设计优雅的神经网络架构。 通过避免…

【Docker系列】深入解析 Docker 容器部署脚本

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Shardingsphere-Proxy 5.5.0部署

Shardingsphere-Proxy 5.5.0部署 Shardingsphere系列目录&#xff1a;背景下载安装包Linux解压安装包修改配置文件global.yamldatabase-sharding.yaml配置没有单表情况配置有单表的情况背景 引入数据库驱动启动代理连接代理数据库Navicate工具连接MYSQL客户端连接 Shardingsphe…

华为IPD体系中三大流程之IPD流程的六个阶段和七个评审点介绍

概念 IPD集成产品开发&#xff0c;英文是IntegratedProduct Development&#xff0c;是一整套科学的研发创新管理方法论&#xff0c;将产品经营管理思想和理念置入到新产品开发和产品管理过程中&#xff0c;因此IPD是不仅是一套研发管理体系&#xff0c;更是一套产品经营管理体…

浸没式液冷服务器的换热效率及节能潜力分析

服务器浸没式液冷的换热效率及节能潜力 摘要&#xff1a;我们针对服务器浸没式液冷实验台进行了深入测试&#xff0c;探究了不同室外温度和服务器发热功率对系统制冷PUE的影响。实验数据显示&#xff0c;该系统的制冷PUE值介于1.05至1.28之间&#xff0c;高效节能特点显著。 在…

报表控件Stimulsoft 图表轴的日期时间步长模式

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…

83. 删除排序链表中的重复元素

文章目录 题目解题思路代码 题目 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2] 示例 2&#xff1a; 输入&#xff1…

年终奖发放没几天,提离职领导指责我不厚道,我该怎么办?

“年终奖都发了&#xff0c;你还跳槽&#xff1f;太不厚道了吧&#xff01;” “拿完年终奖就走人&#xff0c;这不是典型的‘骑驴找马’吗&#xff1f;” 每到岁末年初&#xff0c;关于“拿到年终奖后是否应该立即辞职”的话题总会引发热议。支持者认为&#xff0c;这是个人…

LVS负载均衡群集群DR模式LVS负载均衡部署

1、LVS-DR工作原理 1、数据包流向分析 第一步&#xff1a;客户端发送请求到 Director Server (负载均衡器&#xff09;&#xff0c;请求的数据报文到达内核空间。 数据报文 源 IP ------客户端的 IP 目标 IP ------ VIP 源 MAC ------客户端的 MAC 目的 MAC ------ Director …