[Shell编程学习路线]——if条件语句(单,双,多分支结构)详细语法介绍

news2024/10/7 13:15:08

🏡作者主页:点击! 

🛠️Shell编程专栏:点击!

⏰️创作时间:2024年6月17日7点50分

🀄️文章质量:95分


文章目录

————前言————

💯趣站💯

1. 单分支 if 语句

示例

2. 双分支 if 语句

示例

3. 多分支 if 语句

示例

条件判断

结合 bc 处理浮点数比较


————前言————

条件语句是编程中的基本构建块之一,if语句在Shell脚本中起着至关重要的作用。通过if语句,你可以根据不同的条件执行不同的代码,从而使脚本具备决策能力和灵活性。本篇指南将详细介绍Shell中的if条件语句,包括单分支、双分支和多分支结构,帮助你掌握条件判断的基本语法和使用技巧。无论是简单的判断还是复杂的条件组合,这里都有你需要的知识。让我们一同学习如何编写更智能、更高效的Shell脚本吧!

在学习Shell编程时,掌握if条件语句是非常关键的一步。if语句能够让你根据不同的条件来控制程序的行为,从而实现更灵活、更强大的脚本。通过学习if条件语句,你将能够更好地理解和利用Shell脚本的逻辑结构,为进一步学习Shell编程打下坚实的基础。

💯趣站💯

前些天发现了一个巨牛的🤖人工智能学习网站,通俗易懂,风趣幽默,忍不住粉香一下给大家,人工智能, 机器算法等......  点击跳转!icon-default.png?t=N7T8https://www.captainbed.cn/sis/

1. 单分支 if 语句

单分支 if 语句用于在条件满足时执行一段代码,而在条件不满足时不执行任何操作。

结构

if [ condition ]; then
    # 当 condition 为真时执行的命令
fi

示例

示例 1: 判断一个数字是否为正数

#!/bin/bash

number=5

if [ $number -gt 0 ]; then
    echo "$number 是正数"
fi

实列2 

例如,有些特权命令操作要求以 root用户执行,如果当前用户不是root,那么再执行这些命令就没有必要(肯定会失败),针对这种情况,在脚本中可以先判断当前用户是不是root,如果不是则报错并执行“exit 1”命令退出脚本(1表示退出后的返回状态值),而不再执行其他代码。

#!/bin/bash
if [ $USER != 'root' ];then
echo '你的权限不够'
exit 1
fi

2. 双分支 if 语句

双分支 if 语句用于在条件满足时执行一段代码,在条件不满足时执行另一段代码。

结构

if [ condition ]; then
    # 当 condition 为真时执行的命令
else
    # 当 condition 为假时执行的命令
fi

示例
  • 示例 1: 判断一个数字是正数还是非正数

#!/bin/bash
​
number=-3
​
if [ $number -gt 0 ]; then
    echo "$number 是正数"
else
    echo "$number 是非正数"
fi
示例 2: 检查文件是否存在,如果不存在则创建文件 
#!/bin/bash

file="example.txt"

if [ -f "$file" ]; then
    echo "$file 存在"
else
    touch "$file"
    echo "$file 已创建"
fi

3. 多分支 if 语句

多分支 if 语句用于在多种条件下执行不同的代码段。可以使用 elif 来增加多个条件。

结构

if [ condition1 ]; then
    # 当 condition1 为真时执行的命令
elif [ condition2 ]; then
    # 当 condition2 为真时执行的命令
elif [ condition3 ]; then
    # 当 condition3 为真时执行的命令
else
    # 当所有条件都不满足时执行的命令
fi

示例
  • 示例 1: 判断一个数字是正数、负数还是零

#!/bin/bash

number=0

if [ $number -gt 0 ]; then
    echo "$number 是正数"
elif [ $number -lt 0 ]; then
    echo "$number 是负数"
else
    echo "$number 是零"
fi

示例 2: 检查文件的类型(普通文件、目录、其他)

#!/bin/bash

file="example.txt"

if [ -f "$file" ]; then
    echo "$file 是一个普通文件"
elif [ -d "$file" ]; then
    echo "$file 是一个目录"
else
    echo "$file 是其他类型"
fi

条件判断

if 语句中,条件判断可以使用多种测试操作符,包括但不限于:

  • 文件测试操作符:

    • -f filename:判断是否为普通文件

    • -d directory:判断是否为目录

    • -e filename:判断文件或目录是否存在

  • 数值比较操作符:

    • -eq:等于

    • -ne:不等于

    • -lt:小于

    • -le:小于或等于

    • -gt:大于

    • -ge:大于或等于

  • 字符串比较操作符:

    • =:等于

    • !=:不等于

    • -z string:字符串长度为零

    • -n string:字符串长度非零

结合 bc 处理浮点数比较

在处理浮点数比较时,可以使用 bc 进行计算和比较,例如:

#!/bin/bash

value1=4.5
value2=5.0

if (( $(echo "$value1 > $value2" | bc -l) )); then
    echo "$value1 大于 $value2"
else
    echo "$value1 不大于 $value2"
fi

"成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

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

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

相关文章

【NOI】C++程序结构入门之循环结构四——带余除法

文章目录 前言一、带余除法1.1 概念1.2 编程中的使用1.2.1 模运算1.2.2 判断奇偶性1.2.3 判断倍数关系1.2.4 循环和迭代控制1.2.5 密码学与安全1.2.6 算法设计1.2.7 数据验证与错误处理 二、例题讲解问题:1389 - 数据分析问题:1750 - 有0的数问题&#x…

宕机了, redis如何保证数据不丢?

前言 如果有人问你:"你会把 Redis 用在什么业务场景下?" 我想你大概率会说:"我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。…

IDEA快速入门03-代码头统一配置

三、代码规范配置 3.1 文件头和作者信息 配置入口:依次打开 File -> Settings -> Editor -> File and Code Templates。 Class /*** Copyright (C) 2020-${YEAR}, Glodon Digital Supplier & Purchaser BU.* * All Rights Reserved.*/ #if (${PACKA…

基于SSM+Jsp的旅游景点线路网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

在线求助:什么!!我的单链表只能得30分!!

题目: 来源: B3631 单向链表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 我的代码 输入输出: 输入 6 1 1 99 1 99 50 1 99 75 2 99 3 75 2 1 输出 75 99 我的测试结果:

JAVA---类和对象详解(1)

JAVA类和对象详解(1) 1.面向对象的初步认知 1.1什么是面向对象? Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成…

VSCode的maven插件配置问题

最近尝试使用VSCode开发java后台项目,发现安装了java开发套件的插件 配置了开发环境之后,maven下载的依赖包始终位于~/.m2/repository目录之后,放在了默认的C盘,这就是我最不喜欢的位置。 为了保证C的小,所以需要修改…

物联网工程的未来发展趋势及影响

物联网工程是在互联网基础上的一种新兴技术,其核心思想是通过网络连接不同物体,实现智能化的交流与互动。在未来,物联网工程将继续向更多领域发展,如智能家居、智能城市、智能交通等。首先,物联网工程在智能家居领域的…

《Windows API每日一练》4.3 点和线的绘制

理论上,所有的图形设备驱动程序所需要的就是SetPixel函数和GetPixel函数。其余的一切都可以使用在GDI模块中实现的更高层的例程来处理。例如,画一条线,GDI可以不停地调整x和y坐标,然后连续调用多次SetPixel函数来实现。 事实上&a…

[vue3]组件通信

自定义属性 父组件中给子组件绑定属性, 传递数据给子组件, 子组件通过props选项接收数据 props传递的数据, 在模版中可以直接使用{{ message }}, 在逻辑中使用props.message defineProps defineProps是编译器宏函数, 就是一个编译阶段的标识, 实际编译器解析时, 遇到后会进行…

LogicFlow 学习笔记——9. LogicFlow 进阶 节点

LogicFlow 进阶 节点(Node) 连线规则 在某些时候,我们可能需要控制边的连接方式,比如开始节点不能被其他节点连接、结束节点不能连接其他节点、用户节点后面必须是判断节点等,想要达到这种效果,我们需要为…

腾讯地图避坑-获取地图点击点的经纬度

map.on(click,(evt)>{console.log("evt",evt)let lat evt.latLng.getLat();//lat 获取let lng evt.latLng.getLng();//lng 获取console.log("evt.latLng-有效方式",evt.latLng)console.log("evt[latlng]-无效方式",evt[latlng])})

docker容器基本原理简介

一、docker容器实例运行的在linux上是一个进程 1)、我们通过docker run 通过镜像运行启动的在linux上其实是一个进程,例如我们通过命令运行一个redis: docker run -d --name myredis redis2)、可以看到首先我们本地还没有redis镜…

WPS如何合并多个word文档到一个文档中

将多个Word文档合并成一个 【插入】---》【附件】----》【文件中的文字】----》选择多个需要合并的word文档,点击确定即可。 用的工具是WPS。

12c rac到单机adg开启同步报错ora-01157 ora-01110 temp文件相关错误

问题 处理方法 alter database recover managed standby database cancel; create temporary tablespace TEMP1 tempfile /u01/app/oracle/oradata/standby/temp_01.dbf size 10240m autoextend on; SQL> alter database recover managed standby database disconnect fr…

蜂鸣器(2):12V有源蜂鸣器

蜂鸣器(2):12V有源蜂鸣器 在本教程中,我们将学习如何对Arduino进行编程,以控制12V有源蜂鸣器以产生响亮的声音。如果您想控制 5V 有源/无源蜂鸣器,请查看此 Arduino 压电蜂鸣器教程 Hardware Required 所…

中华老字号李良济,展现百年匠心之魅力,释放千年中医药文化自信

6月14-16日,“潮品老字号 国货LU锋芒”江苏老字号博览会在南京隆重启幕,中华老字号李良济凭借过硬的品牌实力和优质的口碑再次受邀参加,并在展会上绽放百年匠心魅力,彰显千年中医药文化自信! 百年匠心 以实力铸就荣耀…

Java阻塞队列:PriorityBlockingQueue

Java阻塞队列:PriorityBlockingQueue 在Java的并发编程中,阻塞队列是一种非常重要的数据结构。它不仅能在多线程环境下安全地进行数据交换,还能在需要时自动阻塞或唤醒线程。本文将详细介绍阻塞队列中的一种重要实现——PriorityBlockingQue…

【Java】已解决java.lang.ArrayIndexOutOfBoundsException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.ArrayIndexOutOfBoundsException异常 一、问题背景 java.lang.ArrayIndexOutOfBoundsException 是 Java 中一个非常常见的运行时异常,它表明程序试图访问数…

Python高级用法:路径与文件操作(os与pathlib)

路径与文件 前言导入包判断路径存在判断路径类型(判断文件还是文件夹)获取父路径写入读出文件获得路径中所有子文件/子文件夹获取文件扩展名获取多个文件扩展名获取路径的组件创建目录删除文件或空目录 前言 在Python中,os模块提供了与操作系…