【Linux】shell的条件判断

目录

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

二.条件判断方法 

三.判断表达式

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
yesa=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.pswp.cn/diannao/85390.shtml

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

相关文章

【Python办公】Excel简易透视办公小工具

目录 专栏导读1. 背景介绍2. 功能介绍3. 库的安装4. 界面展示5. 使用方法6. 实际应用场景7. 优化方向完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系…

HarmonyOS鸿蒙与React Native的融合开发模式以及能否增加对性能优化的具体案例

鸿蒙与React Native的融合开发模式 一、技术架构设计 底层适配层 通过HarmonyOS的NDK封装原生能力&#xff08;如分布式软总线、AI引擎&#xff09; 使用React Native的Native Modules桥接鸿蒙API&#xff08;需重写Java/Objective-C部分为ArkTS&#xff09; 组件映射机制 …

LLaMA-Factory - 批量推理(inference)的脚本

scripts/vllm_infer.py 是 LLaMA-Factory 团队用于批量推理&#xff08;inference&#xff09;的脚本&#xff0c;基于 vLLM 引擎&#xff0c;支持高效的并行推理。它可以对一个数据集批量生成模型输出&#xff0c;并保存为 JSONL 文件&#xff0c;适合大规模评测和自动化测试。…

麦克风和电脑内播放声音实时识别转文字软件FunASR整合包V5下载

我基于FunASR制作的实时语音识别转文字软件当前更新到V5版本。软件可以实时识别麦克风声音和电脑内播放声音转为文字。 FunASR软件介绍 FunASR 是一款基础语音识别工具包和开源 SOTA 预训练模型&#xff0c;支持语音识别、语音活动检测、文本后处理等。 我使用FunASR制作了一…

子串题解——和为 K 的子数组【LeetCode】

谨记&#xff1a; 数组不是单调的话&#xff0c;不要用滑动窗口&#xff0c;考虑用前缀和 写法一&#xff1a;两次遍历 代码的核心思想是通过 前缀和 和 哈希表 来高效地统计符合条件的子数组个数。具体步骤如下&#xff1a; 计算前缀和数组 s&#xff1a; s[i] 表示 nums 的前…

硬件服务器基础

1、硬件服务器基础 2、服务器后面板 3、组件 3.1 CPU 3.2 内存 3.3 硬盘 3.4 风扇 4、服务器品牌 4.1 配置 4.2 CPU 架构 4.2.1 CPU 命名规则 4.2.2 服务器 CPU 和家用 CPU 的区别 4.2.3 CPU 在主板的位置 4.2.4 常见 CPU 安装方式 4.3 内存中组件 4.3.1 内存的分类 4.3.1.1 …

OpenWebUI(1)源码学习构建

1. 前言 通过docker镜像拉取安装就不介绍了&#xff0c;官方的命令很多。本节主要撸一撸源码&#xff0c;所以&#xff0c;本地构建 2. 技术框架和启动环境 后端python&#xff0c;前端svelte 环境要求&#xff1a;python > 3.11 &#xff0c;Node.js > 20.10 3. 源…

三方接口设计注意事项

前言 随着业务系统间集成需求的增加&#xff0c;三方接口设计已成为现代软件架构中的关键环节。一个设计良好的三方接口不仅能够提供稳定可靠的服务&#xff0c;还能确保数据安全、提升系统性能并支持业务的持续发展。 一、设计原则 1. 统一接口原则 三方接口设计应遵循统一…

CSS篇-5

1. 内联元素可以实现浮动吗? 是的,内联元素完全可以实现浮动。在 CSS 中,任何元素都可以被设置为浮动(float)。 当一个元素被设置了 float 属性后,无论它本身是块级元素还是内联元素,它都会表现出类似于块级元素的特性: 生成块级框(Block-level box):浮动元素会生…

RocketMQ 学习

消息队列 参考官方文档&#xff1a;https://rocketmq.apache.org/zh/docs/ 基本概念 主题&#xff08;Topic&#xff09;&#xff1a;是消息传输和消息存储的顶级容器&#xff0c;不是实际的消息容器&#xff0c;而是一个逻辑上的概念&#xff0c;用于区分不同业务消息的标识&…

Conda更换镜像源教程:加速Python包下载

Conda更换镜像源教程&#xff1a;加速Python包下载 为什么要更换conda镜像源&#xff1f; Conda作为Python的包管理和环境管理工具&#xff0c;默认使用的是国外镜像源&#xff0c;在国内下载速度往往较慢。通过更换为国内镜像源&#xff0c;可以显著提高包下载速度&#xff…

PCIe—TS1/TS2 之Polling.Active(一)

前文 训练序列有序集用于比特对齐、符号对齐以及交换物理层参数。2.5GT/s和5GT/s速率时&#xff0c;训练序列有序集不会加扰&#xff0c;只用8b/10b 编码。但到8GT/s及以上速率时&#xff0c;采用128b/130b编码&#xff0c;符号有可能加扰有可能不加扰&#xff0c;具体…

【HarmonyOS Next之旅】DevEco Studio使用指南(二十八) -> 开发云对象

目录 1 -> 开发流程 2 -> 创建云对象 3 -> 开发云对象 4 -> 调试云对象 4.1 -> 前提条件 4.2 -> 通过本地调用方式调试云对象 4.3 -> 通过远程调用方式调试云对象 5 -> 部署云对象 1 -> 开发流程 除去传统的云函数&#xff0c;您还可在端云…

基于51单片机的音乐盒汽车喇叭调音量proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1l3CSSMi4uMV5-XLefnKoSg 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C51 是一款常用的 8 位单片机&#xff0c;由 Atmel 公司&#xff08;现已被 Microchip 收…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.8 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.8 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 (a) dataframe<-data.frame( Lightc(580,568…

[蓝桥杯]分考场

题目描述 nn 个人参加某项特殊考试。 为了公平&#xff0c;要求任何两个认识的人不能分在同一个考场。 求是少需要分几个考场才能满足条件。 输入描述 输入格式&#xff1a; 第一行&#xff0c;一个整数 nn (1≤n≤1001≤n≤100)&#xff0c;表示参加考试的人数。 第二行…

C++: STL简介与string类核心技术解析及其模拟实现

目录: 一.STL二.string类一、创建对象的6种构造方式二、常用接口解析1. 容量操作2. 元素访问3. 修改操作4. 字符串操作 三.string模拟实现一、设计基础&#xff1a;类结构与资源管理二、拷贝控制&#xff1a;深拷贝的三种实现1. 传统深拷贝2. 现代写法&#xff08;推荐&#xf…

Python进阶【四】:XML和JSON文件处理

Python提供了多种处理XML和JSON文件的方式&#xff0c;让我们来看看最常用的方法。 一、处理JSON文件 JSON在Python中处理起来非常简单&#xff0c;因为它的结构与Python的字典(dict)和列表(list)几乎一致。 常用模块&#xff1a;json模块 优点&#xff1a;Python标准库自带…

Golang | 搜索哨兵-对接分布式gRPC服务

哨兵&#xff08;centennial&#xff09;负责接待客人&#xff0c;直接与调用方对接。哨兵的核心组件包括service HUB和connection pool。service HUB用于与服务中心通信&#xff0c;获取可提供服务的节点信息。connection pool用于缓存与index worker的连接&#xff0c;避免每…

CSS3实现的账号密码输入框提示效果

以下是通过CSS3实现输入框提示效果的常用方法&#xff0c;包含浮动标签和动态提示两种经典实现方案&#xff1a; 一、浮动标签效果 <div class"input-group"><input type"text" required><label>用户名</label> </div><…