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

🏡作者主页:点击! 

🛠️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/bashnumber=5if [ $number -gt 0 ]; thenecho "$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 ]; thenecho "$number 是正数"
elseecho "$number 是非正数"
fi
示例 2: 检查文件是否存在,如果不存在则创建文件 
#!/bin/bashfile="example.txt"if [ -f "$file" ]; thenecho "$file 存在"
elsetouch "$file"echo "$file 已创建"
fi

3. 多分支 if 语句

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

结构

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

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

#!/bin/bashnumber=0if [ $number -gt 0 ]; thenecho "$number 是正数"
elif [ $number -lt 0 ]; thenecho "$number 是负数"
elseecho "$number 是零"
fi

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

#!/bin/bashfile="example.txt"if [ -f "$file" ]; thenecho "$file 是一个普通文件"
elif [ -d "$file" ]; thenecho "$file 是一个目录"
elseecho "$file 是其他类型"
fi

条件判断

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

  • 文件测试操作符:

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

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

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

  • 数值比较操作符:

    • -eq:等于

    • -ne:不等于

    • -lt:小于

    • -le:小于或等于

    • -gt:大于

    • -ge:大于或等于

  • 字符串比较操作符:

    • =:等于

    • !=:不等于

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

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

结合 bc 处理浮点数比较

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

#!/bin/bashvalue1=4.5
value2=5.0if (( $(echo "$value1 > $value2" | bc -l) )); thenecho "$value1 大于 $value2"
elseecho "$value1 不大于 $value2"
fi

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

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

神秘泣男子

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

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

相关文章

Python 显示笔记本电脑的电池状态和百分比

方法一: import psutil import psutil battery psutil.sensors_battery() if battery is None:print("No battery is found.")exit() print (battery) percentagebattery.percent print(f"Battery Percentage: {percentage}%")Battery的信息…

【K8s】专题五(3):Kubernetes 配置之 ConfigMap 与 Secret 异同

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、相同点 二、不同点 一、相同点 功能作用:ConfigMap 与 Secret 都用于存储…

数据结构错题答案汇总

王道学习 第一章 绪论 1.1 3.A 数据的逻辑结构是从面向实际问题的角度出发的,只采用抽象表达方式,独立于存储结构,数据的存储方式有多种不同的选择;而数据的存储结构是逻辑结构在计算机上的映射,它不能独立于逻辑结构而存在。数…

【JavaEE精炼宝库】多线程(5)单例模式 | 指令重排序 | 阻塞队列

目录 一、单例模式: 1.1 饿汉模式: 1.2 懒汉模式: 1.2.1 线程安全的懒汉模式: 1.2.2 线程安全的懒汉模式的优化: 二、指令重排序 三、阻塞队列 3.1 阻塞队列的概念: 3.2 生产者消费者模型&#xf…

GPU的工作原理

location: Beijing 1. why is GPU CPU的存储单元和计算单元的互通过慢直接促进了GPU的发展 先介绍一个概念:FLOPS(Floating Point Operations Per Second,浮点运算每秒)是一个衡量其执行浮点运算的能力,可以作为计算…

板凳----Linux/Unix 系统编程手册 25章 进程的终止

25.1 进程的终止:_exit()和exit() 440 1. _exit(int status), status 定义了终止状态,父进程可调用 wait 获取。仅低8位可用,调用 _exit() 总是成功的。 2.程序一般不会调用 _exit(), 而是调用库函数 exit()。exit() …

python-不定方程求解

[题目描述] 给定正整数 a,b,c。求不定方程axbyc 关于未知数 x 和 y 的所有非负整数解组数。输入: 一行,包含三个正整数 a,b,c,两个整数之间用单个空格隔开。每个数均不大于 1000。输出&#xff…

游戏中插入音效

一、背景音乐 准备:素材音乐 方法: 1、方法1: (1) 将背景音乐 bgAudio 拖放到Hierarchy面板 (2) 选中 bgAudio,勾选开始运行就播放、循环播放。调节音量(volume) 2、方法2: (1) Create Empty&#x…

【Android】安卓开发的前景

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

C# 设置PDF表单不可编辑、或提取PDF表单数据

PDF表单是PDF中的可编辑区域,允许用户填写指定信息。当表单填写完成后,有时候我们可能需要将其设置为不可编辑,以保护表单内容的完整性和可靠性。或者需要从PDF表单中提取数据以便后续处理或分析。 之前文章详细介绍过如何使用免费Spire.PDF…

【面试题】MySQL常见面试题总结

备战实习,会定期给大家整理常考的面试题,大家一起加油! 🎯 系列文章目录 【面试题】面试题分享之JVM篇【面试题】面试题分享之Java并发篇【面试题】面试题分享之Java集合篇(三) 注意:文章若有错…

WPF视频学习-简单应用篇图书馆程序(一)

1.登录界面和主界面跳转 先把登录界面分为三行《Grid》 先添加两行&#xff1a; <Grid><!--//分三行&#xff0c;行排列--><Grid.RowDefinitions><RowDefinition Height"auto"/><RowDefinition Height"auto"/><RowDef…

m4s转mp3——B站缓存视频提取音频

前言 しかのこのこのここしたんたん&#xff08;鹿乃子乃子虎视眈眈&#xff09;非常之好&#xff0c;很适合当闹钟&#xff0c;于是缓存了视频&#xff0c;想提取音频为mp3 直接改后缀可乎&#xff1f;格式转换工具&#xff1f; 好久之前有记录过转MP4的&#xff1a; m4s转为…

Python自动化办公(一) —— 根据PDF文件批量创建Word文档

Python自动化办公&#xff08;一&#xff09; —— 根据PDF文件批量创建Word文档 在日常办公中&#xff0c;我们经常需要根据现有的PDF文件批量创建Word文档。手动操作不仅费时费力&#xff0c;而且容易出错。幸运的是&#xff0c;使用Python可以轻松实现这个过程。本文将介绍如…

python14 字典类型

字典类型 键值对方式&#xff0c;可变数据类型&#xff0c;所以有增删改功能 声明方式1 {} 大括号&#xff0c;示例 d {key1 : value1, key2 : value2, key3 : value3 ....} 声明方式2 使用内置函数 dict() 创建1)通过映射函数创建字典zip(list1,list2) 继承了序列的所有操作 …

基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真。仿真输出GDOP优化结果&#xff0c;遗传算法的优化收敛曲线以及三维空间坐标点。 2.测试软件版本以及运行…

关于HTTP劫持,该如何理解、防范和应对

一、引言 HTTP劫持&#xff08;HTTP Hijacking&#xff09;是一种网络安全威胁&#xff0c;它发生在HTTP通信过程中&#xff0c;攻击者试图通过拦截、篡改或监控用户与服务器之间的数据流量&#xff0c;以达到窃取敏感信息或执行恶意操作的目的。今天我们就来详细了解HTTP劫持…

gma 2.0.10 (2024.06.16) | GmaGIS V0.0.0a4 更新日志

安装 gma 2.0.10 pip install gma2.0.10网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码&#xff1a;1pc8 注意&#xff1a;此版本没有Linux版&#xff01; 编译gma的Linux虚拟机没有时间修复&#xff0c;本期Linux版…

vue 之 vuex

目录 vuex 是什么 Vuex管理哪些状态呢&#xff1f; Vuex 页面刷新数据丢失怎么解决 1. 使用浏览器的本地存储 2. 使用 Vuex 持久化插件 3. 使用后端存储 注意事项 Vuex 为什么要分模块并且加命名空间 vuex 是什么 vuex 是专门为 vue 提供的全局状态管理系统&#xff0c…

物理隔离后数据怎么导入和导出?安全U盘一键解决

政府单位、军工和科研所、航空航天企业、金融机构、医疗单位、电力企业、生物制药实验室等企业及单位&#xff0c;因研发和生产过程、或日常经营中涉及大量敏感信息和技术&#xff0c;需要通过物理隔离来确保网络的安全性。因此&#xff0c;多采用物理隔离的方式进行网络建设。…