【Linux】shell的条件判断

news2025/6/3 6:52:31

目录

一.使用逻辑运算符判定命令执行结果

二.条件判断方法 

三.判断表达式

3.1文件判断表达式

3.2字符串测试表达式

3.3整数测试表达式

3.4逻辑操作符


一.使用逻辑运算符判定命令执行结果

  • && 在命令执行后如果没有任何报错时会执行符号后面的动作
  • || 在命令执行后如果命令有报错会执行符号后的动作


二.条件判断方法 

使用测试语句来测试条件表达式的条件真假

实验代码
test "$a" = "$b" && echo yes || echo no    #test
no
[ $a = $b ] && echo yes || echo no    #[]
no
[[ $a =~ 2|10 ]] && echo yes || echo no    #[[]]
yes
(( $a < 0 | $a > 10 )) && echo yes || echo no    #(())
yes


三.判断表达式

3.1文件判断表达式

以下是常用的文件测试操作符

 实验代码

#检测文件是否存在
[ -a "/mnt/fjw" ] && echo yes || echo no
no
touch fjw
[ -a "/mnt/fjw" ] && echo yes || echo no
yes
[ -e "/mnt/fjw" ] && echo yes || echo no
yes

#检测文件是否为块设备
[ -b "/dev/sda" ] && echo yes || echo no
yes

#检测文件是否为字符设备
[ -c "/dev/pts/0" ] && echo yes || echo no
yes
[ -c "/dev/tty0" ] && echo yes || echo no
yes

#检测是否为链接文件
ln -s fjw yyy
[ -L "/mnt/yyy" ] && echo yes || echo no
yes

#检测是否为目录
[ -d "/mnt/" ] && echo yes || echo no
yes

#检测是否为普通文件
[ -f "/mnt/" ] && echo yes || echo no
no
[ -f "/mnt/yyy" ] && echo yes || echo no
yes

#检测是否为套接字
find / -type -s   #查找为套接字的文件
ls -l /run/systemd/journal/dev-log
srw-rw-rw-. 1 root root 0 May 31 11:39 /run/systemd/journal/dev-log 
[ -S "/run/systemd/journal/dev-log" ] && echo yes || echo no        #-S 为检测套接字
yes

#检测文件是否设置了suid位
[ -u /mnt/fjw ]&& echo yes || echo no
yes

#检测文件是否可读,可写,可执行
[ -r /mnt/fjw ] && echo yes || echo no
yes
[ -w /mnt/fjw ] && echo yes || echo no
yes
[ -x /mnt/fjw ] && echo yes || echo no
no

#检测两个文件的新旧
[ "fjw" -nt "fjwyyy" ] && echo yes || echo no
no
[ "fjw" -ot "fjwyyy" ] && echo yes || echo no
yes

#检测两个文件的节点号是否相同
ls -i    #查看文件节点号
[ "fjw" -ef "fjwtest" ] && echo yes || echo no
yes






3.2字符串测试表达式

常用的判断字符串操作符

#检测字符串是否为空
a=""
b=1
[ -z "$a" ] && echo yes || echo no
yes
[ -n "$a" ] && echo yes || echo no
no

#检测字符串是否相等
[ "$USER" = "root" ] && echo yes || echo no
yes
su - yyy
[ "$USER" = "root" ] && echo yes || echo no
no




3.3整数测试表达式

常用的判断整数操作符

这里只拿[]与(())来做演示

#[]
a=1
[ "$a" -eq "1" ] && echo yes || echo no
yes
[ "$a" -ne "1" ] && echo yes || echo no
no
[ "$a"  -gt "2" ] && echo yes || echo no
no
[ "$a"  -ge "2" ] && echo yes || echo no
no
[ "$a"  -lt "2" ] && echo yes || echo no
yes
["$a"  -le "2" ] && echo yes || echo no
yes

#(())
a=1
(($a==2)) && echo yes || echo no    #这里要用==,使用=会识别成赋值
no
(($a==2)) && echo yes || echo no
no
(($a!=2)) && echo yes || echo no
yes
(($a>2)) && echo yes || echo no
no
(($a>=2)) && echo yes || echo no
no
(($a<2)) && echo yes || echo no
yes
(("a"<="2")) && echo yes || echo no
yes


3.4逻辑操作符

[ ! -e /mn ] && echo yes
yes


a=5
[ "$a" -lt "10" -a "$a" -gt "0" ] && echo yes || echo no
yes
[[ "$a" -lt "10" && "$a" -gt "0" ]] && echo yes || echo no
yes
[[ $a < 10 && $a > 0 ]] && echo yes || echo no
no
(($a<10 && $a>0)) && echo yes || echo no
yes
(($a<3 || $a>10)) && echo yes || echo no
no

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

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

相关文章

第九天:java注解

注解 1 什么是注解&#xff08;Annotation&#xff09; public class Test01 extends Object{//Override重写的注解Overridepublic String toString() {return "Test01{}";} }2 内置注解 2.1 Override Override重写的注解 Override public String toString() {ret…

十一、【核心功能篇】测试用例管理:设计用例新增编辑界面

【核心功能篇】测试用例管理&#xff1a;设计用例新增&编辑界面 前言准备工作第一步&#xff1a;创建测试用例相关的 API 服务 (src/api/testcase.ts)第二步&#xff1a;创建测试用例编辑页面组件 (src/views/testcase/TestCaseEditView.vue)第三步&#xff1a;配置测试用例…

Spring是如何实现属性占位符解析

Spring属性占位符解析 核心实现思路1️⃣ 定义占位符处理器类2️⃣ 处理 BeanDefinition 中的属性3️⃣ 替换具体的占位符4️⃣ 加载配置文件5️⃣ Getter / Setter 方法 源码见&#xff1a;mini-spring 在使用 Spring 框架开发过程中&#xff0c;为了实现配置的灵活性&#xf…

DDR4读写压力测试

1.1测试环境 1.1.1整体环境介绍 板卡&#xff1a; pcie-403板卡 主控芯片&#xff1a; Xilinx xcvu13p-fhgb2104-2 调试软件&#xff1a; Vivado 2018.3 代码环境&#xff1a; Vscode utf-8 测试工程&#xff1a; pcie403_user_top 1.1.2硬件介绍 UD PCIe-403…

编写测试用例

测试用例&#xff08;Test Case&#xff09;是用于测试系统的要素集合 目录 编写测试用例作用 编写测试用例要包含七大元素 测试用例的设计方法 1、等价类法 2、边界值法 3、正交表法 4、判定表法 5、错误推测法 6、场景法 编写测试用例作用 1、确保功能全面覆盖…

每日Prompt:隐形人

提示词 黑色棒球帽&#xff0c;白色抹胸、粉色低腰短裙、白色襪子&#xff0c;黑色鞋子&#xff0c;粉紅色背包&#xff0c;衣服悬浮在空中呈现动态姿势&#xff0c;虚幻引擎渲染风格&#xff0c;高清晰游戏CG质感&#xff0c;户外山林背景&#xff0c;画面聚焦在漂浮的衣服上…

TensorFlow深度学习实战(19)——受限玻尔兹曼机

TensorFlow深度学习实战&#xff08;19&#xff09;——受限玻尔兹曼机 0. 前言1. 受限玻尔兹曼机1.1 受限玻尔兹曼机架构1.2 受限玻尔兹曼机的数学原理 2. 使用受限玻尔兹曼机重建图像3. 深度信念网络小结系列链接 0. 前言 受限玻尔兹曼机 (Restricted Boltzmann Machine, RB…

告别手动绘图!基于AI的Smart Mermaid自动可视化图表工具搭建与使用指南

以下是对Smart Mermaid的简单介绍&#xff1a; 一款基于 AI 技术的 Web 应用程序&#xff0c;可将文本内容智能转换为 Mermaid 格式的代码&#xff0c;并将其渲染成可视化图表可以智能制作流程图、序列图、甘特图、状态图等等&#xff0c;并且支持在线调整、图片导出可以Docke…

【Oracle】安装单实例

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 安装前的准备工作1.1 硬件和系统要求1.2 检查系统环境1.3 下载Oracle软件 2. 系统配置2.1 创建Oracle用户和组2.2 配置内核参数2.3 配置用户资源限制2.4 安装必要的软件包 3. 目录结构和环境变量3.1 创建Ora…

QT中更新或添加组件时出现“”qt操作至少需要一个处于启用状态的有效资料档案库“解决方法”

在MaintenanceTool.exe中点击下一步 第一个&#xff1a; 第二个&#xff1a; 第三个&#xff1a; 以上任意一个放入资料库中

论文速读《UAV-Flow Colosseo: 自然语言控制无人机系统》

论文链接&#xff1a;https://arxiv.org/abs/2505.15725项目主页&#xff1a;https://prince687028.github.io/UAV-Flow/ 0. 简介 近年来&#xff0c;无人机技术蓬勃发展&#xff0c;但如何让无人机像智能助手一样理解并执行人类语言指令&#xff0c;仍是一个前沿挑战。现有研…

ES6+中Promise 中错误捕捉详解——链式调用catch()或者async/await+try/catch

通过 unhandledrejection 捕捉未处理的 Promise 异常&#xff0c;手动将其抛出&#xff0c;最终让 window.onerror 捕捉&#xff0c;从而统一所有异常的处理逻辑 规范代码&#xff1a;catch&#xff08;onRejected&#xff09;、async...awaittry...catch 在 JavaScript 的 Pro…

解常微分方程组

Euler法 function euler_method % 参数设置 v_missile 450; % 导弹速度 km/h v_enemy 90; % 敌艇速度 km/h % 初始条件 x0 0; % 导弹初始位置 x y0 0; % 导弹初始位置 y xe0 120; % 敌艇初始位置 y t0 0; % 初始时间 % 时间步长和总时间 dt 0.01; % 时间步长 t_final …

C++实现汉诺塔游戏自动完成

目录 一、汉诺塔的规则二、数学递归推导式三、步骤实现(一)汉诺塔模型(二)递归实现(三)显示1.命令行显示2.SDL图形显示 四、处理用户输入及SDL环境配置五、总结六、源码下载 一、汉诺塔的规则 游戏由3根柱子和若干大小不一的圆盘组成&#xff0c;初始状态下&#xff0c;所有的…

pikachu靶场通关笔记07 XSS关卡03-存储型XSS

目录 一、XSS 二、存储型XSS 三、源码分析 四、渗透实战 1、输入mooyuan试一试 2、注入Payload 3、查看数据库 4、再次进入留言板页面 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff0c;通过对XSS关卡源码的代码审计找到XSS风险的…

OpenCV CUDA模块直方图计算------用于在 GPU 上执行对比度受限的自适应直方图均衡类cv::cuda::CLAHE

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::CLAHE 是 OpenCV 的 CUDA 模块中提供的一个类&#xff0c;用于在 GPU 上执行对比度受限的自适应直方图均衡&#xff08;Contrast Limi…

华为OD机试真题——矩形绘制(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

JDBC连不上mysql:Unable to load authentication plugin ‘caching_sha2_password‘.

最近为一个spring-boot项目下了mysql-9.3.0&#xff0c;结果因为mysql版本太新一直报错连不上。 错误如下&#xff1a; 2025-06-01 16:19:43.516 ERROR 22088 --- [http-nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispat…

MacOS安装Docker Desktop并汉化

1. 安装Docker Desktop 到Docker Desktop For Mac下载对应系统的Docker Desktop 安装包&#xff0c;下载后安装&#xff0c;没有账号需要注册&#xff0c;然后登陆即可。 2. 汉化 前往汉化包下载链接下载对应系统的.asar文件 然后将安装好的文件覆盖原先的文件app.asar文件…

Centos系统搭建主备DNS服务

目录 一、主DNS服务器配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建正向区域文件 4.创建区域数据文件 5.检查配置语法并重启服务 二、从DNS服务配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建缓存目录 4.启动并设置开机自启 一、主DNS服务器配置 1.安装 BIN…