条件测试,if语句,case语句

测试命令

格式1:test 条件表达式

格式2:[条件表达式]

test命令和 [    ] 相同,建议使用[   ] 
#方框中要空格
#用test可能会不小心定义变量

文件测试

常见的测试操作符含义
-d检查文件是否存在且为目录
-f检查文件是否存在且为常规文件
-L测试是否为软连接文件
-r测试当前用户是否有读取权限
-w测试当前用户是否有写入权限
-x测试当前用户是否有执行权限
-e测试文件是否存在
属性测试
-s FILE是否存在且非空
-t fd文件描述符是否在某终端已经打开
-N FILE文件自从上一次被读取之后是否被修改过
-O FILE当前有效用户是否为文件属主
-G FILE当前有效用户是否为文件属组

整数比较

只能用于整数

整数1 操作符 整数2

常用操作符含义
-eq第一个数等于(Equal)第二个数
-ne第一个数不等于(Not Equal)第二个数
-gt第一个数大于(Greater Than)第二个数
-lt第一个数小于(Lesser Than)第二个数
-le第一个数小于或等于(Lesser or Equal)第二个数
-ge第一个数大于或等于(Greater or Equal)第二个数

字符串比较

操作符含义
=字符串内容相同
!=字符串内容不同,! 号表示相反的意思
-z字符串为空
-n字符是否存在
#!/bin/bash
read -p "请做出你的选择:" choiceif [ $choice = "123" ]                                                                   
then
echo "a"
else
echo "cc"
fi[root@localhost data]# bash cs.sh
请做出你的选择:123
a

逻辑测试

操作符含义
-a或&&逻辑与,全真才为真
-o逻辑或,一真即为真
i逻辑否

逻辑与&&

CMD1 && CMD2

同时满足命令1 和命令2 的要求 才会返回正确 ,输出命令2的结果

全真才为真 一假即为假

第一个CMD1结果为真 ,第二个CMD2必须要参与运算,才能得到最终的结果

第一个CMD1结果为假 ,总的结果必定为假,因此不需要执行CMD2

逻辑或||

CMD1 || CMD2

命令1满足要求,直接输出命令1的结果,不需要命令2参与

如果命令1不满足要求,命令2满足,会输出命令2的结果

一真即为真 第一个CMD1结果为真 (1),总的结果必定为1,因此不需要执行CMD2 第一个CMD1结果为假 (0),第二个CMD2 必须要参与运算,才能得到最终的结果

组合应用

用法只有一个

CMD1 && CMD2 || CMD3

短路与必须在短路或前

if语句

单分支结构

#单分支格式if [ 判断条件 ]
then ; echo " "
else
echo " "
fi
# if 和 fi要对应

多分支结构

#多分支格式if [ 判断   ]
then 
echo "  "
elif[   ] #可以无限elif 
if
...fielse #以上条件都为假
echo "   "fi
# if 和 fi要对应
#!/bin/bash# 定义一个变量
read -p "请输入你的年龄:" age  if [ $age -ge 18 ]
thenecho "你已经成年了!"
elseecho "你还未成年!"
fi
[root@localhost data]# bash nl.sh
请输入你的年龄:18
你已经成年了!
[root@localhost data]# bash nl.sh
请输入你的年龄:12
你还未成年!
#!/bin/bash
read -p "请输入你的输入分数(0-100):" numif [ $num -ge 85 -a $num -le 100 ]
then
echo "你真厉害"
elif [ $num -ge 70 -a $num -le 84 ]
then
echo "你很棒了"
elif [ $num -ge 0 -a $num -lt 70 ]
then
echo "你仍需努力"
else
echo "你输错了,重新输"bash $0fi[root@localhost data]# bash gl.sh
请输入你的输入分数(0-100):100
你真厉害
[root@localhost data]# bash gl.sh
请输入你的输入分数(0-100):80
你很棒了
[root@localhost data]# bash gl.sh
请输入你的输入分数(0-100):60
你仍需努力
[root@localhost data]# bash gl.sh
请输入你的输入分数(0-100):120
你输错了,重新输
请输入你的输入分数(0-100):0
你仍需努力

case语句

结构

case 变量名 in

case支持glob风格的通配符: * 任意长度任意字符

? 任意单个字符

[0-9] 指定范围内的任意单个字符

| 或者,如: a|b

#!/bin/bash# 定义一个变量
read -p "这是什么水果:" fruitcase $fruit in"apple")echo "这是一个苹果";;"orange")echo "这是一个橘子";;"banana")echo "这是一个香蕉";;*)echo "这是其他水果";;
esac[root@localhost data]# bash sg.sh 
这是什么水果:apple
这是一个苹果
[root@localhost data]# bash sg.sh 
这是什么水果:1234
这是其他水果

echo命令

echo -n 表示不换行输出

echo -e 表示输出转义符

选项作用
\r光标移动至行首,并且不换行
\s当前shell的名称
\t插入TAB键
\n输出换行
\f换行
\表示插入“\”本身的转义
\b表示退格
\c抑制更多的输出或不换行
echo -e "n\n\n\n\n\nw" | fdisk /dev/sdb
#自动磁盘分区

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

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

相关文章

解决json日期格式问题

解决json日期格式问题 1.json默认输出时间格式 RequestMapping("/json3") public String json3() throws JsonProcessingException {ObjectMapper mapper new ObjectMapper();//创建时间一个对象,java.util.DateDate date new Date();//将我们的对象解…

Knife4j:快速入门

1. 概述 Knife4j是一个用于生成和展示API文档的工具,同时它还提供了在线调试的功能,下图是其工作界面。 * Knife4j有多个版本,最新版的Knife4j基于开源项目springdoc-openapi,这个开源项目的核心功能就是根据SpringBoot项目中的代…

uniapp uniCloud云开发

uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址:https://unicloud.dcloud.net.cn 文档:https://doc.dcloud.net.cn/uniCloud/ un…

大模型应用-多模态和大模型是如何相互成就的

前言 如果单纯的将大模型用来聊天,那就是low了。 而多模态赋予了大模型更多的现实价值,大模型则助力多模态变得更强大。 多模态 我们所处的是一个物理世界,不同事物之间模态多种多样,即便是简单的文本,按照语言&am…

【Docker0】网络更改

目录 1. 停止docker服务 2. 关闭docker默认桥接网络接口 3. 从系统删除docker0接口 4. 创建一个名为bridge0的新接口 5. 添加ip地址和子网掩码 6. 启用bridge0接口 7. (如果没起来就执行该句) 8. 查看ip 1. 停止docker服务 sudo service docker…

c++用什么软件编程?都有哪些?

c用什么软件编程?都有哪些? C 作为一种高效、面向对象的编程语言,广泛应用于软件开发、游戏开发、嵌入式系统等领域。那么在进行 C 编程时,我们通常会使用哪些软件呢?下面就来具体分析。 1. Visual Studio Visual Stu…

深入 SSH:解锁本地转发、远程转发和动态转发的潜力

文章目录 前言一、解锁内部服务:SSH 本地转发1.1 什么是 SSH 本地转发1.2 本地转发应用场景 二、打开外部访问大门:SSH 远程转发2.1 什么是 SSH 远程转发2.2 远程转发应用场景 三、动态转发:SSH 让你拥有自己的 VPN3.1 什么是 SSH 动态转发3.…

mysqldump全备份之后,如何只恢复一个库或者一个表

在实际工作中,一个MySQL实例中可能有多个database。而我们备份时,通常采用完全备份,将所有database都备份到一个文件中。 但是,偶尔会遇到只恢复一个database或者一个表的情况。怎么解决呢? 一、利用全备恢复一个库(database)的数据 案例:朋友在群里问, MySQL全库备份…

memory动态内存管理学习之weak_ptr

此头文件是动态内存管理库的一部分。std::weak_ptr 是一种智能指针,它持有对被 std::shared_ptr 管理的对象的非拥有性(“弱”)引用。在访问所引用的对象前必须先转换为 std::shared_ptr。std::weak_ptr 用来表达临时所有权的概念&#xff1a…

three.js实现雪花场景效果

点击获取雪花图片素材 提取码:lywa // 雪花效果 import * as THREE from "three" export function getsnowEffect(th) {console.log(th, th) // this 场景var that th// 创建一个BufferGeometry对象,用于存储顶点数据 const geometry new THREE.Buffe…

Vim神兵:精通自定义补全规则

标题:Vim神兵:精通自定义补全规则 摘要 Vim作为Linux上最强大的文本编辑器之一,其补全功能可以极大提高编码效率。本文将详细探讨如何在Vim中自定义补全规则,包括基本的补全设置、使用Vim脚本扩展补全功能,以及如何利…

大模型微调实战之基于星火大模型的群聊对话分角色要素提取挑战赛:Task01:跑通Baseline

目录 0 背景1 环境配置1.1 下载包1.2 配置密钥1.3 测试模型 2 解决问题2.1 获取数据2.2 设计Prompt2.2 设计处理函数2.3 开始提取 附全流程代码 0 背景 Datawhale AI夏令营第二期开始啦,去年有幸参与过第一期,收获很多,这次也立马参与了第二…

VMware ESXi 技术

目录 一、VMware ESXi安装 1. 在VMware WorkStation中创建一台虚拟机 2. 进入VMware ESXi控制台 3. 配置VMware ESXi网络 二、使用Web网页端登录管理ESXi 1. 分配许可证密钥(选做) 2. 管理ESXi 三、VMware ESXi控制台 1. 创建虚拟机 2. 定制虚拟…

Webpack: 开发 PWA、Node、Electron 应用

概述 毋庸置疑,对前端开发者而言,当下正是一个日升月恒的美好时代!在久远的过去,Web 页面的开发技术链条非常原始而粗糙,那时候的 JavaScript 更多用来点缀 Web 页面交互而不是用来构建一个完整的应用。直到 2009年5月…

LINUX操作系统:Mx Linux,用虚拟机VMware Workstation安装体验

需求说明: 操作系统目前流行有Windows、Linux、Unix等,中国人应该要知道国有操作系统,也要支持国产操作系统,为了更好支持国产操作系统,我们也要知己知彼,那么今天就来体验一把操作系统Mx_Linux_23.2的安装…

分享一个下载windows系统镜像包的网站

下载各种操作系统(比如Windows、Linux、MacOS等)比较快的镜像站点,我尝试过这个不错,提供了BT连接,可以用迅雷软件下载,速度很快的! 入口地址:NEXT, ITELLYOU 1)打开网站…

[XYCTF新生赛2024] pwn

用了一周来复现crypto部分(不能算是复现,拿着 糖醋小鸡块的WP一点点学了下)。 两天时间复现PWN部分。相对来说PWN比密码这块要简单,不过ARM,MIPS懒得学了,跳过。 malloc_flag 题目先打开flag将建0x100的块,然后把flag读入再fre…

[深度学习] Transformer

Transformer是一种深度学习模型,最早由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它最初用于自然语言处理(NLP)任务,但其架构的灵活性使其在许多其他领域也表现出色,如计算机视觉、时间序列分析…

MySQL高级-SQL优化- limit优化(覆盖索引加子查询)

文章目录 0、limit 优化0.1、从表 tb_sku 中按照 id 列进行排序,然后跳过前 9000000 条记录0.2、通过子查询获取按照 id 排序后的第 9000000 条开始的 10 条记录的 id 值,然后在原表中根据这些 id 值获取对应的完整记录 1、上传5个sql文件到 /root2、查看…

libctk shared library的设计及编码实践记录

一、引言 1.1 <libctk>的由来 1.2 <libctk>的设计理论依据 1.3 <libctk>的设计理念 二、<libctk>的依赖库 三、<libctk>的目录说明 四、<libctk>的功能模块及使用实例说明 4.1 日志模块 4.2 mysql client模块 4.3 ftp client模块 4…