linux 脚本之条件语句 if与case

1. 测试

条件测试:判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成。

测试过程,实现评估布尔声明,以便用在条件性环境下进行执行

  • 若真,则状态码变量 $? 返回0
  • 若假,则状态码变量 $? 返回1

test 

格式1:test  [操作符选项]  条件表达式
格式2:[  操作符 条件表达式  ]

-d:测试是否为目录
-e:测试目录或文件是否存在
-a:测试目录或文件是否存在  
-f:测试是否为文件
-r:测试当前用户是否有权限读取
-w:测试当前用户是否有权限写入
-x:测试当前用户是否有权限执行
-L: 测试是否为软连接文件

2. 整数数值比较

格式:
[ 整数1 操作符 整数2 ] 

操作符含义
-eq等于(Equal)
-ne不等于(Not Equal)
-lt小于(Leser Than)
-gt大于(Greater Than)
-le小于或等于(Lesser or Equal)
-ge大于或等于(Greater or Equal)

实例:比较两个整数的大小

3. 字符串比较

格式:[ "字符串1" 操作符 "字符串2" ]      

常用的测试操作符

=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n: 字符是否存在


4. 逻辑测试(短路运算)

格式:
[ 表达式1 ]  操作符 [ 表达式2 ]
命令1 操作符 命令2

  • -a或&&:逻辑与,“而且”的意思全真才为真,一假即为假。
  • -o或||:逻辑或,“或者”的意思一真即为真,全假的才为假
  • !:逻辑否

三元运算符

[  表达式  ] && a || b

当条件表达式为真时,取a值;当条件表达式为假时,取b值

5. if语句

单分支结构

单分支

if 判断条件;

then   条件为真的分支代码

fi

双分支结构

格式:

if 判断条件; then

条件为真的分支代码

else

条件为假的分支代码

fi

包剪锤:

#!/bin/bash
# 1 布 2 锤子 3 剪刀
read -p "请输入 1布 2 锤 3 剪刀:" human
m=`echo $[RANDOOM%3+1]`
if [ $human -eq $m ]
then
echo "平局了"
elif [ $human -eq 1 -a $m -eq 2 -o $human -eq 2 -a $m -eq 3 -o $human -eq 3 -a $m -eq 1 ]
then
echo "你赢了"
else
echo "你输了"
fi

多分支结构

多分支

if 判断条件1
then
 条件1为真的分支代码

elif 判断条件2
then
 条件2为真的分支代码

elif 判断条件3;then
 条件3为真的分支代码

...
else
 以上条件都为假的分支代码  托底

fi

​​​​​​​

#!/bin/bash
#90到100分为优秀,80到89为良好,60到79为合格,10到59为不合格,10分以下是出生
read -p " 请输入你的成绩 " grade
if [ $grade -ge 90 ] && [ $grade -le 100 ]
then
echo " 你的成绩优秀"
elif [ $grade -ge 80 ] && [ $grade -le 89 ]
then
echo " 你的成绩良好" 
elif [ $grade -ge 60 ] && [ $grade -le 79 ]
then
echo " 你的成绩为合格"
elif [ $grade -ge 10 ] && [ $grade -le 59 ]
then
echo " 你的成绩不合格 "
else
echo " 你是个出生 "
fi

6. case

case 变量 in 
模式1)....;;模式2)....;;*)  ....;;
esca

实例:

#输入yes或no中任意一个或多个字母的大小写都能识别为yes或n0
#!/bin/bash
read -p " 请输入 yes/no " key
case $key in
[nN]|[nN][oO])
echo " 你输入的是no "
;;
[yY]|[yY][eE][sS])
echo " 你输入的是yes "
;;
*)
echo " 你输入的格式不对,请重新输入"
echo ` bash $0 `esac

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

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

相关文章

接口性能测试 —— Jmeter并发与持续性压测

接口压测的方式: 1、同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的次数 2、持续压测:设置线程组、循环次数,勾选“永远”,调度器(持续时间),这种…

轻松整合Knife4j:快速搭建Swagger文档界面与接口调试

Knife4j 是一个为 Java 开发者提供的 Swagger 文档聚合工具,它是 Swagger-Bootstrap-UI 的升级版。它的主要功能是生成和展示 API 文档,让开发者能够更轻松地查看和测试接口。 整合 Knife4j(Swagger-Bootstrap-UI 的升级版)到 Spr…

从 Elasticsearch 到 SelectDB,观测云实现日志存储与分析的 10 倍性价比提升

作者:观测云 CEO 蒋烁淼 & 飞轮科技技术团队 在云计算逐渐成熟的当下,越来越多的企业开始将业务迁移到云端,传统的监控和故障排查方法已经无法满足企业的需求。在可观测理念逐渐深入人心的当下,人们越来越意识到通过多层次、…

第三方发起备份的ORA-00245问题

文章目录 前言一、信息确认共享目录位置控制文件快照位置节点1节点2 二、RAC修改snapshot controlfile 参数三、字典表确认以及测试 前言 在使用 AnyBackup 管理控制台发起 Oracle RAC 数据库备份后,在任务历史记录 > 执行输出中显示如下错误信息: c…

Unity版本使用情况统计(更新至2023年10月)

本期UWA发布的内容是第十三期Unity版本使用统计,统计周期为2023年5月至2023年10月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势,了解近半年来哪些Unity版本的使用概率更…

智慧环保:视频监控平台EasyCVR与AI智能分析在环保领域的应用

人工智能(AI)视频分析技术在环保领域有着广泛的应用,通过智能识别和跟踪技术,AI视频分析可以实时监测空气质量、水质和噪音等环境指标,帮助环保部门及时发现污染源并进行有效治理,提高监测、管理和保护环境…

zookeeper集群(很少用)+kafka集群(常用)

一、zookeeper zookeeperkafka(2.7.0版本) kafka(3.4.1版本)不依赖于zookeeper 1、定义:zookeeper开源,分布式架构,提供协调服务(Apache项目),基于观察者模…

“通识+产业”大模型,“Alaya元识”的赋能路径

2023年11月,国家工业信息安全发展研究中心、工信部电子知识产权中心发布的《中国AI大模型创新和专利技术分析报告》显示,我国大模型专利申请总数已突破4万余件,大模型相关领域的创新日益活跃。 相对于“能做诗会画画”的针对to C市场的大模型…

【论文阅读】基于隐蔽带宽的汽车控制网络鲁棒认证(三)

文章目录 第六章 通过认证帧定时实现VulCAN的非once同步6.1 问题陈述6.2 方法概述6.3 动机和缺点6.3.1 认证帧定时隐蔽通信6.3.2 VulCAN的梵蒂冈后端Nonce同步的应用 6.4 设计与实现6.4.1发送方6.4.2 接收方6.4.3 设计参数配置6.4.4 实现 6.5 安全注意事项6.5.1 系统模型6.5.2攻…

Python (十五) 面向对象之多继承问题

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

【AI数字人-论文】Wav2lip论文解读

文章目录 Wav2lip前言Lip-sync Expert DiscriminatorGeneratorvisual quality discriminator生成器总损失函数 论文 Wav2lip 前言 Wav2Lip 是第一个通用说话者的模型,可生成与真实同步视频相匹配的口型同步精度的视频,它的核心架构概括为“通过向训练有…

CLIPTokenizer.from_pretrained本地加载

以"openai/clip-vit-large-patch14"为例,原代码为: self.tokenizer CLIPTokenizer.from_pretrained(“openai/clip-vit-large-patch14”) self.transformer CLIPTextModel.from_pretrained(“openai/clip-vit-large-patch14”) 但我连不到外…

Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用

一、CNN简介 1. 神经网络基础 输入层(Input layer),众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。 输出层(Output layer),讯息在神经元链接中传输、分析、权…

VUE2中使用阿里云播放器AliPlayer

简述 基于 Vue 的播放器单页应用, 利用 web 播放器 sdk 进行视频点播,包含播放列表、字幕、多语言、自适应码率,皮肤自定义等功能 Web播放器文档 已知问题 vue中使用截图,不太好使【已自行优化】无键盘快捷键,无法通过空格暂停…

DCGAN 使用指南:将卷积神经网络和对抗网络结合,适用于生成小尺寸的图像

DCGAN 使用指南:将卷积神经网络和对抗网络结合 网络结构细节设计 论文地址:https://arxiv.org/abs/1511.06434 项目代码:https://github.com/tensorlayer/DCGAN.git DCGAN 适用于生成小尺寸的图像,并且具有简单易用的优势 Styl…

“2024上海智博会、2024北京智博会”双展联动,3月上海,6月北京

“2024上海智博会、2024北京智博会”双展联动,将分别于3月和6月在上海和北京举办。这两个展会旨在充分展示智慧城市、人工智能、物联网、大数据、软件等新兴行业的最新产品和技术。 作为中国最具影响力和创新力的智能科技展会,上海智博会和北京智博会吸引…

bclinux aarch64 ceph 14.2.10 云主机 性能对比FastCFS vdbench

部署参考 ceph-deploy bclinux aarch64 ceph 14.2.10-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【3】vdbench fsd 文件系统测试-CSDN博客 ceph 14.2.10 aarch64 非集群内 客户端 挂载块设备-CSDN博客 FastCFS vdbench数据参考 bclinux aarch64 openeuler 20.03 …

Java LeetCode篇-深入了解关于单链表的经典解法

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 移除链表元素 1.1 使用双指针方法 2.0 反转链表 2.1 递归法 2.2 头插法 3.0 链表中倒数第 k 个节点 3.1 递归法 3.2 快慢指针 4.0 合并两个有序链表 4.1 递归法 …

【每日一题】1670. 设计前中后队列-2023.11.28

题目: 1670. 设计前中后队列 请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类: FrontMiddleBack() 初始化队列。void pushFront(int val) 将 val 添加到队列的 最前面…

如何通过“闻香”给葡萄酒分类?

有句话叫做“闻香识女人”,葡萄酒也如同美女,千娇百媚风情万种,所以通过“闻香”也可以给葡萄酒进行分类。 那么,云仓酒庄的品牌雷盛红酒分享葡萄酒都有哪些不同的香呢? 云仓酒庄是云仓酒庄的结合,也就是在…