【Linux | Shell】结构化命令 - if 语句

news2024/11/22 18:03:05

目录

  • 一、概述
  • 二、if-then 语句
  • 三、if-then-else 语句
  • 四、if-then-elif 语句
  • 五、嵌套 if 语句


在这里插入图片描述

一、概述

前面文章介绍了一些Shell脚本的基础知识,也了解了怎样构建一个shell脚本文件,让shell脚本执行一些基础的指令,但都是从上到下依次执行的。在实际shell编程中,会遇到很多情况需要判断条件,按不同条件去执行不同的命令。本文注意介绍shell编程中的一些结构化命令条件语句等内容:

  • if-then 语句
  • if-then-else 语句
  • if-then-elif 语句
  • 嵌套 if 语句在这里插入图片描述

在这里插入图片描述

二、if-then 语句

if-then 语句是最基本的结构化命令,其格式如下:

if command
then
	commands
fi

首先,if语句会运行 if 之后的命令;
然后,判断该命令的退出状态码($?)是否为0,为0则执行then部分的命令,不为0则不执行;
最后,fi 语句用来表示 if-then 语句到此结束。


在有些脚本中,你可能看到过 if-then 语句的另一种形式:

if command; then
	commands
fi

通过把分号(;)放在待求值的命令尾部,可以将 then 语句写在同一行,这样看起来更像其他编程语言中的 if-then 语句。

在这里插入图片描述

三、if-then-else 语句

if-then 语句中,不管命令是否成功执行,都只有一种选择。下面介绍这个命令在命令执行成功后,会执行一些命令,不成功则可以执行其他命令,这就是 if-then-else 语句。if-then-else 语句格式如下:

if command
then
	commands
else
	commands
fi

首先,if语句会运行 if 之后的命令command
然后,判断该命令的退出状态码($?)是否为0,为0则执行then部分的命令,不为0则执行else部分的命令;
最后,fi 语句用来表示 if-then 语句到此结束。

在这里插入图片描述

四、if-then-elif 语句

if-then-else 语句也只是提供了两个选择,如果想要判断更多的情况,可以选择if-then-elif语句。if-then-elif 语句格式如下:

if command
then
	commands
elif command
then
	commands
fi

首先,if语句会运行 if 之后的命令command
然后,判断该命令的退出状态码($?)是否为0,为0则执行then部分的命令;
不为0则继续运行elif的命令command
继续判断该命令退出状态码是否为0,为0则执行then部分的命令;
最后,fi 语句用来表示 if-then 语句到此结束。


可以继续将多个 elif 语句串起来,形成一个更大的 if-then-elif 嵌套组合:

if command1
then
	command set 1
elif command2
then
	command set 2
elif command3
then
	command set 3
elif command4
then
	command set 4
fi

在这里插入图片描述

五、嵌套 if 语句

有时需要在脚本中检查多种条件。对此,可以使用嵌套的 if-then 语句。嵌套的 if 语句是指在 if 语句的命令部分又使用 if 语句,基本格式如下:

  • 在 then 命令部分嵌套
if command
then
	commands
	if command
	then
		commands
	fi
fi
  • 在 else 命令部分嵌套
if command
then
	commands
else
	commands
	if command
	then
		commands
	fi
fi

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

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

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

相关文章

少年侠客【InsCode Stable Diffusion美图活动一期】

少年侠客【InsCode Stable Diffusion美图活动一期】 文章目录 Stable Diffusion 模型在线使用地址第一张图第二张图第三张图第四张图第五张图第六章图 一、InsCode Stable Diffusion 体验1.1 界面很友好1.2 小小体验一下1.3 体验感受 二、如何在InsCode给Stable Diffusion安装L…

车载软件架构 —— 闲聊几句AUTOSAR OS(九)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标…

Keil中文注释乱码解决

1、打开Keil之后,点击Edit 2、点击Configuration 3、 选择Encording ,在下拉列表中 选择Chinese GB2312 保存设置,重启keil。

4-1 Working with images

4-Real-world data representation using tensors How do we take a piece of data, a video, or a line of text, and represent it with a tensor in a way that is appropriate for training a deep learning model? This is what we’ll learn in this chapter. We menti…

Spring Boot环境配置Envirnoment

Srping Boot 中我们使用 EnvironmentAware 注入 Environment 对象后,可以在 Environment 中获得系统参数,命令行采参数,文件配置等信息。 Environment 是如何存储,管理这些值的呢?变量发生冲突怎么办呢?我…

Linux--fork创建子进程,操作系统都做了什么

一句话总结:为该进程创建内核数据结构task_struct、地址空间mm_struct、页表并创建映射关系,一定程度上还要将该进程的代码和数据加载进内存 以下是对上面的解释: 首先,fork创建子进程,是不是操作系统里多了一个进程&…

Android ART虚拟机系列: 虚拟机CheckPoint机制分析

背景 在Android ART虚拟机中,GC的部分流程中会执行stop the world的操作,那么,STW在虚拟机中如何实现呢?本文就深入到ART虚拟机源码中,探寻STW的实现过程。 【本文基于android12源码分析】 CheckPoint机制 ART虚拟机…

SPSS数据文件的合并

数据文件合并的方式分为个案合并和变量合并。 个案合并指在两个数据文件拥有同共同变量时,将其中一个数据文件的个案合并到另一个数据文件中。变量合并指在两个数据文件拥有共同个案时,将其中一个数据文件的变量合并到另一个数据文件相应的个案中。 1…

文心一言 VS 讯飞星火 VS chatgpt (60)-- 算法导论6.4 4题

文心一言 VS 讯飞星火 VS chatgpt (60)-- 算法导论6.4 4题 四、证明:在最坏情况下,HEAPSORT 的时间复杂度是Ω (nlgn)。 文心一言: 要证明在最坏情况下,HEAPSORT 的时间复杂度是 Ω(n log n)&#xff0c…

Asymmetric Student-Teacher Networks for Industrial Anomaly Detection

用于工业异常检测的不对称学生-教师网络 摘要介绍模型架构总体介绍:教师网络学生网络 实验结论 时间:2022.10.14 期刊:WACV 之前师生网络结构的不足: 具有类似体系结构的学生网络,当输入不属于训练分布的数据时&#…

前端 | (三)表单及HTML4收尾 | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 文章目录 📚表单🐇基本结构🐇常用表单控件⭐️文本输入框⭐️密码输入框⭐️单选框⭐️复选框⭐️隐藏域⭐️提交按钮⭐️重置按钮⭐️普通按钮⭐…

【雕爷学编程】Arduino动手做(83)---模拟SG90舵机模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

一个Spring Session JDBC例子

Spring Session JDBC是Spring Session项目的一部分,它提供了一种将会话数据存储在关系型数据库中的方法。Spring Session是一个用于在分布式环境中管理和共享会话的解决方案,它允许您通过不同的会话存储后端(如内存、关系型数据库、NoSQL数据…

使用torch.nn包来构建神经网络

神经网络 可以使用torch.nn包来构建神经网络. 我们已经介绍了autograd包,nn包则依赖于autograd包来定义模型并对它们求导。一个nn.Module包含各个层和一个forward(input)方法,该方法返回output。 例如,下面这个神经网络可以对数字进行分类…

xss跨站脚本攻击总结

XSS(跨站脚本攻击) 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets )CSS的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当…

047、TiDB特性_TopSQL

TopSQL 之前 之前没有办法找单个TiKV Server的语句。只能查找整个集群的慢语句。 TopSQL之后 指定TiDB及TiKV实例正在执行的SQL语句CPU开销最多的Top 5 SQL每秒请求数、平均延迟等信息 TopSQL 使用 选择需要观察负载的具体TiDB Server或TiKV实例 观察Top 5 类SQL 查看某…

Linux 自动化构建工具(make/Makefile)

绪论 拼着一切代价,奔你的前程。——巴尔扎克. 本章继续学习Linux常用的工具,make是可以帮我们解决一些重复使用相同指令的冗杂的自动化构建工具。 话不多说安全带系好,发车啦(建议电脑观看)。 附:红色&…

TortoiseGit 入门指南08:浏览引用以及在引用间切换

在上一节 创建分支 中,我们学会了在分支上开发新功能,那么随之而来的问题是:如何查看项目又多少分支?如何再切换到主分支?这节来解决这些问题。 在回答之前,需要先了解一个 Git 术语:引用&…

学无止境·MySQL⑨(MongoDB)

MongoDB的安装及使用 MongoDB1、MongoDB的安装与启动2、创建一个数据库 名字grade3、数据库中创建一个集合名字 class4、集合中插入若干数据文档格式如下5、查找查看班级所有人信息查看班级中年龄为8岁的学生信息查看年龄大于10岁的学生信息查看年龄在 4---8岁之间的学生信息找…

接口测试之基于SaaS平台的iHRM项目的前端部署配置(踩坑版)

基于SaaS平台的iHRM项目的前端部署配置 下载安装node.js3.从Git上下载项目安装依赖包的改进方法 关于的部署可以参考基于SaaS平台的iHRM项目的前端部署教程博客 但本人在参考配置的过程中遇到了很多问题…于是写下这篇博客 下载安装node.js 可以访问https://nodejs.org/en下载…