Shell条件测试、if语句、case分支语句

news2024/11/15 1:51:32

目录

一、条件测试

1. 条件测试操作

2.test 命令

 3.文件测试

 4.字符串比较

 5.逻辑测试

 二、if语句

1.单分支结构

2. 双分支结构

3.多分支结构

 三、case语句

1.case结构


一、条件测试

1. 条件测试操作

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常。

2.test 命令

格式一:test 条件表达式

格式二:[条件表达式]

 3.文件测试

格式:[ 操作符    文件或目录 ]

常用操作符说明
-e测试目录或文件是否存在(Exist)
-d测试是否为目录(Directory)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试是否设置有可执行(Excute)权限
常用操作符说明符号
-eq等于==
-ne不等于!=
-gt大于>
-lt小于<
-le小于等于<=
-ge大于等于>=

 4.字符串比较

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

常用操作符说明
=相同
!=不相同

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

常用操作符说明
-z检查字符串是否为空(Zero)
-n检查是否有字符串存在

 5.逻辑测试

[ 表达式1] 操作符 [表达式2]

常用操作符说明
&&逻辑与(前后都成立)
-a
||逻辑或(成立其中一个)
-o
!逻辑否

 二、if语句

1.单分支结构

#单分支格式#

if [  判断条件  ]
then ; echo "  "
else
echo "   "
fi

2. 双分支结构

if 条件测试操作
then
命令序列 1
else
命令序列 2
fi

例如:
vim pinghost1.sh
#!/bin/bash
ping -c 3 -i 0.5 -W 2 $1 &> /dev/null 
if [ $? -eq 0 ]
then
	echo "$1 online"
else
	echo "$1 off"
fi

-c:发送包的个数
-i:发送包的间隔时间
-W:超时时间
-w:多少秒后停止 ping 命令操作

3.多分支结构

if 条件测试操作 1
then
命令序列 1
elif 条件测试操作 2
then
命令序列 2
[else]
[命令序列 3]
fi

例子:
vim score.sh
#!/bin/bash
read -p "请输入您的分数(0-100): " score
if [ $score -ge 85 ] && [ $score -le 100 ]
then
	echo "$score 分,优秀!"
elif [ $score -ge 70 ] && [ $score -le 84 ]
then
	echo "$score 分,合格!"
else
	echo "$score 分,不合格!"
fi

 三、case语句

1.case结构

#基本结构#
case 变量名 in
    值1)
        # 匹配值1时执行的代码块
        ;;
    值2)
        # 匹配值2时执行的代码块
        ;;
    值3)
        # 匹配值3时执行的代码块
        ;;
    *)
        # 不匹配任何值时执行的代码块,类似于default语句
        ;;
esac

使用 case 分支语句时,有几个值得注意的特点如下所述:

  • case 行尾必须为单词“in”,每一模式必须以右括号“)”结束。
  • 双分号“;;”表示命令序列的结束。
  • 模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号“|”表示或,如“A|B”。
  • 最后的“*)”表示默认模式,其中的*相当于通配符。
#!/bin/bash
read -p "请输入一个字符:" KEY
case "$KEY" in    #"KEY"为变量名
[a-z]|[A-Z])    #匹配的变量值
  echo "输入的是字母"    #执行的操作
;;
[0-9])
  echo "输入的是数字"
;;
*)
  echo "输入的是其他字符"
#没有匹配的值时执行的操作
esac    #结束语句

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

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

相关文章

C++学习笔记——求整数的和与均值

一、题目描述 二、代码 #include <iostream> #include<iomanip>using namespace std;int main() {int n;cin >> n;double a[n];for(int i0;i<n;i){cin >> a[i];}double num 0;for(int i0;i<n;i){num num a[i];}double result num / n;cout &…

dotpeek反编译dll导出代码

安装dotpeek github 官网 加载dll 导出 问题 去掉特性即可&#xff0c;安装mono.cecil using Mono.Cecil; using System;namespace DelSuppressIldasmAttribute {internal class Program{static void Main(string[] args){var input "xxxx.dll";var output &qu…

mybatis 八股文

目录 重点 mybatis如何防止sql注入 #和$的区别 mybatis一级缓存、二级缓存 为什么说 Mybatis 是半自动 ORM 映射工具&#xff1f;它与全自动的区别 基础 什么是MyBatis 谈谈你为什么用MyBatis&#xff0c;有什么优点 MyBatis有哪些缺点 如何获取自动生成的主键 属性名和…

linux 进程开机自启

linux 进程开机自启 在Linux系统中&#xff0c;要让一个进程在开机时自动启动&#xff0c;可以使用systemd服务。 以下是创建自启动服务的步骤和示例代码&#xff1a; 创建一个新的systemd服务单元文件。 文件通常位于/etc/systemd/system/目录下&#xff0c;以.service作为…

18年精诚合作!苏州金龙携Mowasalat成就卡塔尔中国客车第一品牌

8月25日&#xff0c; 卡塔尔国家运输公司Mowasalat&#xff08;以下简称“M公司”&#xff09;成立20周年暨与苏州金龙海格客车合作18周年庆典在卡塔尔首都多哈隆重召开。卡塔尔交通部部长贾西姆本赛义夫苏莱提&#xff0c;中国驻卡塔尔使馆经商处参赞杨松、M公司董事长萨阿德艾…

无人机之航拍的优势

无人机航拍在多个方面展现出了显著的优势&#xff0c;这些优势使其在航拍领域具有强大的竞争力和广泛的应用前景。以下是无人机航拍的主要优势&#xff1a; 一、 独特的视角与视觉震撼 独特视角&#xff1a;无人机航拍提供了与传统拍摄截然不同的视角&#xff0c;尤其是垂直正…

小米手机误删照片如何恢复?

在日常使用手机的过程中&#xff0c;我们难免会遇到误删照片的情况&#xff0c;尤其是在整理相册时一不小心就可能将珍贵的回忆永久删除。但别担心&#xff0c;小米手机提供了多种方法来帮助你恢复误删的照片。本文将为你详细介绍三种有效的恢复策略&#xff0c;帮助你找回那些…

【CSS in Depth 2 精译_021】3.4 负的外边距 + 3.5 外边距折叠

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

【思源笔记】思源笔记配置S3同步

本文首发于 ❄️慕雪的寒舍 文章目录 1. 写在前面2. 什么是思源笔记的S3/WEBDAV同步&#xff1f;2.1. 说明2.2. 思源的同步配置和工作空间2.3. 什么是S3协议&#xff1f; 3. 配置思源S3同步3.1. 初始化数据仓库密钥3.2. 思源S3同步界面3.3. 配置七牛云KODO3.4. 如何将同步配置导…

排队免单小程序

本文来自&#xff1a;排队免单小程序 - 源码1688 应用介绍 排队免单小程序是基于移动互联网技术开发的平台系统&#xff0c;通过小程序的形式为消费者和商家搭建了一个互动桥梁。以下是对排队免单小程序的详细介绍&#xff1a; 一、基本概念 排队免单小程序是一种创新的营销工…

Qt与SVG

Qt之SVG&#xff1a;Qt简单使用SVG的介绍_qt svg-CSDN博客 <?xml version"1.0" standalone"no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xml…

15 种高级 RAG 技术 ——从预检索到生成

15 种高级 RAG 技术 ——从预检索到生成 检索增强生成&#xff08;RAG&#xff09;是一个丰富、快速发展的领域&#xff0c;它为增强由大型语言模型&#xff08;LLM&#xff09;驱动的生成式人工智能系统创造了新的机会。在本指南中&#xff0c;WillowTree的数据与人工智能研究…

工业一体机,为工业自动化提供完美解决方案

近年来&#xff0c;智能制造成为全球制造业转型升级的必然趋势&#xff0c;而工业自动化作为智能制造的关键环节&#xff0c;其重要性日益凸显。在这一趋势下&#xff0c;工业一体机凭借其高度集成、稳定可靠、灵活高效等优势&#xff0c;成为了工业自动化领域中不可或缺的“利…

Mysql的查询指令

整理了一些Mysql的查询语句&#xff0c;希望对大家有帮助&#xff0c;祝大家心想事成万事如意&#xff01; 基本查询 select 字段 from 表名 where 条件&#xff1b; 排序查询 select 字段 from 表名 order by 排序字段 [asc升序|desc降序] limit 前几行/中间几行&#xff1…

Nature methods | FlowSig--揭示细胞间流动网络新方法!有具体代码可实操!

–https://doi.org/10.1038/s41592-024-02380-w Inferring pattern-driving intercellular flows from single-cell and spatial transcriptomics FlowSig是刚刚&#xff08;8月26日&#xff09;发表在nature methods上的新文章&#xff0c;该方法系统性地推断出由细胞间通信…

Ubuntu系统使用Docker部署中文版trilium并实现远程编辑笔记

文章目录 前言1. 安装docker与docker-compose2. 启动容器运行镜像3. 本地访问测试4.安装内网穿透5. 创建公网地址6. 创建固定公网地址 前言 今天和大家分享一款在G站获得了26K的强大的开源在线协作笔记软件&#xff0c;Trilium Notes的中文版如何在Linux环境使用docker本地部署…

GPT微调和嵌入哪个好,大模型微调 和嵌入有什么区别?微调(fine-tuning),嵌入(embedding)的用法!

GPT擅长回答问题&#xff0c;但是只能回答它以前被训练过的问题&#xff0c;如果是没有训练过的数据&#xff0c;比如一些私有数据或者最新的数据该怎么办呢&#xff1f; 这种情况下通常有两种办法&#xff0c;一种是微调&#xff08;fine-tuning&#xff09;&#xff0c;一种…

四大神器:2024免费数据恢复软件推荐!

在这个数字化的时代&#xff0c;数据丢失可能是我们最不想面对的事情之一。但不用担心&#xff0c;今天我就来给大家介绍几款免费又好用的数据恢复软件&#xff01; 第一款&#xff1a;福昕数据恢复 链接&#xff1a;www.pdf365.cn/foxit-restore/ 这是一款由福昕公司推出的…

Vue3+Ts封装input组件时遇到的问题

使用input事件监听输入框变化时&#xff0c;如果当前使用的输入法是中文&#xff0c;他也会触发input事件&#xff0c;正常来说&#xff0c;中文没有输入完毕是不用触发事件的。 控制台打印时发现&#xff1a; 那么我们应该怎么去规避这件事呢&#xff1f; 其实input还有几个事…

从永远到永远-日语学习-て形用法及变形规律

て形用法及变形规律 0.前置知识1.常见用法1.请求某人做某事 「&#xff5e;てください」2.几个连续发生的动作 &#xff5e;て、&#xff5e;て、&#xff5e;て3.两个动作先后发生「てから」4. 表示许可 「てもいいです」5.表示禁止 「&#xff5e;てはいけません」6.「&#…