shell条件测试和if语句

“C:\Users\Jessica\Desktop\6.12.assets\image-20240612094159578.png”# shell条件测试和if语句

一、条件测试

1、$? 返回码

判断命令或者脚本是否执行成功(最近的一条)

0 true 为真就是成功 成立

非0 false 失败或者异常

2、test命令

可以进行条件测试,然后根据的返回值来判断条件是否成立

-e 测试文件或者目录是否存在 exist

-d 测试目录是否存在

-f 测试文件是否存在

-r 测试当前用户是否对文件或目录有读权限

-w 测试当前用户是否对文件或目录有写权限

-x 测试当前用户是否对文件或目录有执行权限

![“C:\Users\Jessica\Desktop\6.12.assets\image-20240612094159578.png”在这里插入图片描述

3、整数比较符

(以下操作符只能用于整数比较)

-eq 等于 == 既可以比较整数,也可以比较字符串

-ne 不等于 != 不等于

-gt 大于 >

-lt 小于 <

-ge 大于等于 >=

-le 小于等于 <=

在这里插入图片描述

4、比较符的第二种

[ ]

5、比较符的第三种

[[ ]] 可以使用更高级的模式,可以使用正则表达式,而且在双中括号中,使用字符串的时候可以不加引号

在这里插入图片描述

6、比较符的第四种

(( )) 运算符

逻辑与和逻辑或

与 && 条件都满足才成立 -a

或 || 有一个条件满足就成立 -o

在这里插入图片描述

在这里插入图片描述

二、if语句

1、单分支结构

if [ 3 -gt 2 ]
thenecho "ok" 
fi
# if 后面是条件测试语句
#then 命令序列 只有条件测试语句成立,才会执行then的命令模块
#fi 结束语句
sh if.sh
成立ok 不成立不显示

2、双分支结构

if [ 3 -gt 4 ]
thenecho "ok" 
elseecho "no"
fi
# sh if.sh
# 条件满足执行then,不满足执行else,执行完毕,语句结束
# 通过位置变量传参的方式给脚本内部传一个ip地址
# ping的通的要提示用户ip is online ,而且要保存到/opt/hosts.txt文件当中
# 如果ping不通,提示用户ip is offline
ping -c 3 $1
if [ $? -eq 0 ]
thenecho "ip is online"echo $1 >> /opt/host.txt
elseecho "ip is offline"
fi
# 随机输入一个整数,read -p输入一个数
# 判断这个是是偶数还是奇数,偶数提示偶数,奇数提示奇数
read -p "一个数" num
if [ $(($num%2)) -eq 0 ]
then echo "偶数"
elseecho  "奇数"
fi

3、多分支结构

if [ ]
then命令序列
elif [ ]
then命令序列
elif [ ]
then命令序列
else
命令序列
fi
read -p "请输入一个整数" num
if [ $num -lt 10 ]
then echo "1"
elif [ $num -gt 20 ]
thenecho "2"
elseecho "3"
fi
# 请输入您的分数,0~100
# 大于等于85,且小于等于100 优秀
# 大于等于70,且小于等于84  一般
# 大于等于60,且小于等于69  合格
# 小于60,30遍read -p "请输入分数:" num
if [[ $num -ge 85 && $num -le 100 ]]
thenecho "优秀"
elif [[ $num -ge 70 && $num -le 84 ]]
thenecho "一般"
elif [[ $num -ge 60 && $num -le 69 ]]
thenecho "合格"
elseecho "30遍" 
fi&&需要双中括号,但中括号可-a

4、嵌套

# num自定义输入,只有整数才可以进入到分数的区间
# 嵌套ifif
# 判断用户输入的是否是整数,不是整数,直接结束,提示用户输入非法,不是整数。read -p "请输入分数:" num
if [[ $num -eq $num ]]
then
if [[ $num -ge 85 && $num -le 100 ]]
thenecho "优秀"
elif [[ $num -ge 70 && $num -le 84 ]]
thenecho "一般"
elif [[ $num -ge 60 && $num -le 69 ]]
thenecho "合格"
elseecho "30遍" 
fi
elseecho "输入错误"
fi
# 会报错,属于冗余信息
# if [[ $num -eq $num ]] &> /dev/null 
# 解决冗余信息  /dev/null黑洞文件

5、case语句

# case语句 相当于多分钟结构
case 变量值 in
模式1)
命令序列
;;
模式2)
命令序列
;;
......
*)
命令序列
esac
#80~100
#70~79
#60~69
#0~59
read -p "输入一个成绩" num
[[ $num -ge 80 && $num -le 100 ]] && a="great"
[[ $num -ge 70 && $num -le 79 ]] && a="standard"
[[ $num -ge 60 && $num -le 69 ]] && a="pass"
[[ $num -ge 0 && $num -le 59 ]] && a="false"
case $a in 
great)echo "$a分,优秀"
;;
standard)echo "$a分,一般"
;;
false)echo "$a分,及格"
;;
*)echo "不及格"
esac
0 && $num -le 79 ]] && a="standard"
[[ $num -ge 60 && $num -le 69 ]] && a="pass"
[[ $num -ge 0 && $num -le 59 ]] && a="false"
case $a in 
great)echo "$a分,优秀"
;;
standard)echo "$a分,一般"
;;
false)echo "$a分,及格"
;;
*)echo "不及格"
esac

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

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

相关文章

「OC」UI练习(二)——照片墙

「OC」UI练习——照片墙 文章目录 「OC」UI练习——照片墙UITapGestureRecognizer介绍照片墙实现 UITapGestureRecognizer介绍 UITapGestureRecognizer是UIKit框架中的一个手势识别器类&#xff0c;用于检测用户在视图上的轻击手势。它是UIGestureRecognizer的一个子类&#x…

什么是vue,第一个vue实例

目录 使用vue有四个步骤&#xff1a; 1.准备容器&#xff08;HTML标签 , ....&#xff09; 2.引包&#xff08;官网&#xff09;-开发版本/生产版本 在 3.创建Vue实例new Vue() el data methods computed watch 4.指定配置项→渲染数据 Vue是一款用于构建用户界面的渐进式Ja…

Python学习笔记11 -- 细碎内容

一、注释 单行注释&#xff1a;前方加# 多行注释&#xff1a;连续三对单引号/双引号&#xff0c;引号内写注释 二、变量 1、定义&#xff1a; 可以发生改变的一个量&#xff0c;用来区分不同数据的&#xff0c;可以指向一个内存空间&#xff0c;帮助存储数据 2、命名规范&…

ROS2读源码过程中涉及到的核心点梳理解读

流控 watchdog 过滤 如何把writer跟reader匹配 依赖topic&#xff1f;QOS? datashared 如何配置 安全 何时持久化 域隔离&#xff1f; 只有在同一个域内的通信实体才能通信&#xff0c;不同域内的实体间无法进行通信 架构设计细节、扩展性&#xff1f; 代码为什么难读…

源代码防泄密经验分享之安全上网篇

场景描述&#xff1a; 随着信息技术的发展&#xff0c;越来越多的新技术产品进入到政府、军事、科研等涉密单位。这些新技术产品在给工作人员带来便利的同时&#xff0c;也给信息安全保密工作带来了许多新的不容忽视的安全隐患&#xff0c;应引起高度重视。常规的内外网隔离手…

Vue29-自定义指令:函数式

一、定义 内置指令&#xff0c;指令是vue作者定的&#xff0c;背后的操作DOM的逻辑是也是vue作者写的。 自定义指令&#xff0c;指令名自定义&#xff0c;指令背后如何去操作DOM元素&#xff0c;也是自定义。 二、需求1&#xff1a;big指令 2-1、自定义指令directive 1、写法…

美摄科技匿名化处理解决方案,包含模糊、同色、马赛克、效果遮挡等各种形式

信息安全已成为企业发展中不可忽视的重要一环&#xff0c;随着信息安全法规的日益严格和公众对个人隐私保护意识的不断提高&#xff0c;企业如何在保障业务顺畅进行的同时&#xff0c;满足信息安全和隐私保护的要求&#xff0c;成为了亟待解决的问题。美摄科技凭借其强大的技术…

西门子学习笔记13 - mtqq库项目

这是我整合过后的mqtt库的下载地址 https://download.csdn.net/download/qq_61916672/89423266https://download.csdn.net/download/qq_61916672/89423266

如何开发一个直播APP:功能介绍与开发步骤详解

随着移动互联网的迅猛发展&#xff0c;直播APP已经成为人们生活中不可或缺的一部分。无论是娱乐、教育、商业还是其他领域&#xff0c;直播APP都以其独特的实时互动性和广泛的受众群体而备受欢迎。那么&#xff0c;如何开发一个直播APP呢&#xff1f;本文将详细介绍直播APP的功…

virtualbox扩展磁盘

使用virtualbox搭建虚拟机&#xff0c;如果磁盘不够用了&#xff0c;可以通过以下方式扩展。 扩容磁盘 分区扩展 查看磁盘情况 fdisk -l Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units sectors of 1 * 512 512 bytes Sector size (logical/phys…

java数组ArrayList迭代修改的ConcurrentModificationException错误

报错&#xff1a; Exception in thread "main" java.util.ConcurrentModificationExceptionat java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)at java.util.ArrayList$Itr.next(ArrayList.java:859)at net.micah.Test.main(Test.java:20)我写…

【全开源】餐饮点餐小程序源码(ThinkPHP+FastAdmin+Uniapp)

&#x1f37d;️餐饮点餐小程序&#xff1a;让美食触手可及 一款基于ThinkPHPFastAdminUniapp开发的点餐小程序&#xff0c;支持单人点餐&#xff0c;还满足多人协同点餐(高级授权)&#xff0c;支持多门店管理&#xff0c;并提供先吃后付和先付后吃两种支付方式。​ &#x1…

[项目推荐]EmoLLM-心理健康大模型

EmoLLM 是一系列能够支持理解用户-支持用户-帮助用户心理健康辅导链路的开源心理健康大模型&#xff0c;由LLM指令微调而来。它旨在全面理解和促进个体、群体乃至整个社会的心理健康状态。 项目介绍 GitHub&#xff1a;https://github.com/SmartFlowAI/EmoLLM 【EmoLLM项目提供…

git 如何强制下拉某个分支

要强制下拉Git仓库中的某个分支&#xff0c;可以使用以下命令&#xff1a; 第一步&#xff1a; git reset --hard HEAD第二步 git pull origin <分支名> git reset --hard HEAD 是一个 Git 命令&#xff0c;它的作用是将当前分支的头部重置为当前提交&#xff08;HEAD…

58.强制类型转换

目录 一.强制类型转换 二.语法格式 三.练习 四.视频教程 一.强制类型转换 强制类型转换可以实现类型之间的互相转换。 二.语法格式 (要强制转换的类型)(变量/表达式) 易错点&#xff1a; (int)xy和(int)(xy)不一样 举例&#xff1a; &#xff08;int&#xff09;a &…

Go API

Go语言提供了大量的标准库&#xff0c;因此 google 公司也为这些标准库提供了相应的API文档&#xff0c;用于告诉开发者如何使用这些标准库&#xff0c;以及标准库包含的方法。官方位置&#xff1a;https://golang.org Golang中文网在线标准库文档: https://studygolang.com/p…

RDB和AOF两种持久化机制的介绍

RDB持久化机制&#xff0c;对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志&#xff0c;以append-only的模式写入一个日志文件中&#xff0c;在redis重启的时候&#xff0c;可以通过回放AOF日志中的写入指令来重新构建整个数据集 如果我们想要redis仅仅作为…

【SpringBoot】94、SpringBoot中使用MyBatis-Plus实现数据权限管理

在系统管理中,除了【菜单/按钮权限】管理外,还有特别重要的是【数据权限】,在管理界面上,我们通过【菜单/按钮权限】控制每一位用户可以看到那些菜单,操作那些按钮。同样需要使用【数据权限】控制每一位用户能看到那些数据。 1、数据权限划分 通过定义一个枚举类来实现数…

荣耀正式发布Magic V Flip,打造全形态折叠屏矩阵

6月13日&#xff0c;荣耀Magic V Flip科技时尚大秀在上海举行。作为荣耀旗下首款小折叠手机&#xff0c;荣耀Magic V Flip的问世标志着荣耀完成折叠屏全体系的最终部署&#xff0c;成为少数集齐现有各类折叠屏手机形态的品牌之一。 荣耀从消费者需求出发&#xff0c;以AI和折叠…

docker-compose Install it-tools

IT-Tools前言 IT-Tools是一款开源的个人工具箱,专为IT从业人员打造,支持Docker私有化部署,包含众多实用的IT工具。其功能丰富多样,涵盖二维码生成、数据格式转换、MAC地址生成等,可满足用户多样化的需求。 前提要求 安装 docker docker-compose 参考创建一键部署it-tool…