当前位置: 首页 > news >正文

Shell 学习之 if 命令

1. 执行流程

Shell 脚本中,if 是一个 控制流语句,用于进行条件判断,根据条件的结果执行相应的操作。

# 首先,Shell 会检查表达式 condition 返回的 boolean 值。
# 如果 condition 的值为真,则执行 then 代码块;
# 如果 condition 的值为假,则执行 else 代码块。 
# if 语句结束。结束后, Shell 继续执行后面的代码。if [ condition ];
then  # 执行条件为真时需要执行的代码块  
else  # 执行条件为假时需要执行的代码块  
fi

2. 条件判断

if 语句中,condition 是一个条件判断表达式,返回值为 布尔值(0:false 1:true)

  • 在条件判断语句中,[ "$str" = "Hello" ] 中的空格是必需的。这是因为在 Shell 中,= 两侧的空格用于分隔运算符和操作数。缺少空格 可能 导致语法错误或错误的结果。
  • 进行字符串判断时,必须使用双引号将参数括起来(例如:"a b",如果没有双引号解析是否存在问题?)。这是因为在 Shell 中,如果使用双引号 Shell 会将参数解释为字符串,如果不使用双引号 Shell 会将变量解释为命令输出,这样会导致判断结果失败或者错误。
2.1. 文件
场景表达式备注
文件存在-e-e /path/to/file
文件存在且类型为文件-f-f /path/to/file1.txt
文件存在且类型为文件夹-d-d /path/to/dir
2.2. 字符串
场景表达式备注
字符串为空-z-z "$string"
字符串不为空-n-n "$string"
字符串相等="$str1" = "$str2"
字符串不相等!="$str1" != "$str2"
2.3. 数字
场景表达式备注
等于-eq$num1 -eq $num2
不等于-ne$num1 -ne $num2
大于-gt$num1 -gt $num2
小于-lt$num1 -lt $num2
大于等于-ge$num1 -ge $num2
小于等于-le$num1 -le $num2
2.4. 逻辑符号
场景表达式示例备注
-a"$str1" = "A" -a "$str2" = "B"两个都为真则为真
-o"$str1" = "A" -o "$str2" = "B"两个都为假则为假
!! -f file1.txt文件 file1.txt 不存在则为真

相关文章:

Shell 学习之 if 命令

1. 执行流程 在 Shell 脚本中,if 是一个 控制流语句,用于进行条件判断,根据条件的结果执行相应的操作。 # 首先,Shell 会检查表达式 condition 返回的 boolean 值。 # 如果 condition 的值为真,则执行 then 代码块&a…...

android 同步 服务器 时间

要将 Android 设备与服务器同步时间,可以通过以下两种方式实现: NTP 协议同步时间 NTP(Network Time Protocol)是一种网络协议,用于同步计算机的时间。Android 设备可以使用 NTP 协议来同步服务器时间。 Android 应…...

10、电路综合-基于简化实频的宽带匹配电路设计方法

10、电路综合-基于简化实频的宽带匹配电路设计方法 网络综合和简化实频理论学习概述中的1-9介绍了SRFT的一些基本概念和实验方法,终于走到了SRFT的另一个究极用途,宽带匹配电路的设计。 1、之前的一些回顾与总结 之前也给出了一些电路综合的案例&…...

N-130基于springboot,vue校园社团管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本系…...

Syntax Error: TypeError: this.getOptions is not a function的解决(Vue)

报错信息: TypeError: this.getOptions is not a function 这个是在运行项目是遇到的问题 这个报错是类型错误,this.getOptions 不是一个函数 。这个错误一般就是less-loader库里的错误。 主要是less-loader版本太高,不兼容this.getOptions…...

使用 kube-downscaler 降低Kubernetes集群成本

新钛云服已累计为您分享772篇技术干货 介绍 Kube-downscaler 是一款开源工具,允许用户定义 Kubernetes 中 pod 资源自动缩减的时间。这有助于通过减少非高峰时段的资源使用量来降低基础设施成本。 在本文中,我们将详细介绍 kube-downscaler 的功能、安装…...

LeetCode热题100——哈希表

哈希表 1.两数之和2.字母异位词分组3.最长连续序列 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。可以按任意顺序返回答案。 // 题解思路:使用哈…...

Kubeadm

目录 绪论:实验步骤 1、环境准备 2、所有节点安装docker 3、所有节点安装kubeadm,kubelet和kubectl 4、部署K8S集群 5、部署 Dashboard 6、安装Harbor私有仓库 master(2C/4G,cpu核心数要求大于2) 192.168.…...

【Overload游戏引擎细节分析】PBR材质Shader---完结篇

PBR基于物理的渲染可以实现更加真实的效果,其Shader值得分析一下。但PBR需要较多的基础知识,不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染,其理论较多,需要的基础知识也较多,我在这就不再写一遍了&…...

C++设计模式_18_State 状态模式

State和Memento被归为“状态变化”模式。 文章目录 1. “状态变化”模式1.1 典型模式 2. 动机 (Motivation)3. 代码演示State 状态模式3.1 常规方式3.2 State 状态模式 4. 模式定义5. 结构( Structure )6. 要点总结7. 其他参考 1. “状态变化”模式 在组件构建过程中&#xf…...

详解final, abstract, interface关键字

一.final关键字 1.final关键字介绍 ——final关键字可以去修饰类、方法、属性和局部变量 2.final关键字的作用 1)final修饰类,这个类不能被其他类继承 2)final修饰方法,方法不能被重写 3)final修饰属性,属…...

统计特殊四元组

题记&#xff1a; 给你一个 下标从 0 开始 的整数数组 nums &#xff0c;返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 &#xff1a; nums[a] nums[b] nums[c] nums[d] &#xff0c;且a < b < c < d 示例 1&#xff1a; 输入&#xff1a; nums [1,2,3…...

腾讯云轻量应用服务器“镜像”怎么选择合适?

腾讯云轻量应用服务器镜像怎么选择&#xff1f;如果是用来搭建网站可以选择宝塔Linux面板腾讯云专享版&#xff0c;镜像系统根据实际使用来选择&#xff0c;腾讯云百科txybk.com来详细说下腾讯云轻量应用服务器镜像的选择方法&#xff1a; 腾讯云轻量应用服务器镜像选择 轻量…...

Ruby模块和程序组织

和类一样&#xff0c;模块是一组方法和常量的集合。 和类不同&#xff0c;模块没有实例&#xff0c;取而代之的是可以将特殊模块的功能添加到一个类或者指定对象之中。 Class类是Module类的一个子类&#xff0c;因此每一个类对象也是一个模块对象 一、模块创建和基础应用 编写…...

14、SpringCloud -- WebSocket 实时通知用户

目录 实时通知用户需求:代码:前端:后端:WebSocket创建 websocket-server 服务添加依赖:配置 yml 和 启动类:前端:后端代码:注意:测试:总结:实时通知用户 需求: 用户订单秒杀成功之后,对用户进行秒杀成功通知。 弹出个提示框来提示。 代码: 前端:...

智能井盖传感器推荐,万宾科技助力城市信息化建设

随着科技产品更新换代进程加快&#xff0c;人工智能在人们日常生活之中逐渐普及开来&#xff0c;深入人们生活的方方面面&#xff0c;影响城市基础设施建设工程。例如在大街小巷之中的井盖作为城市基础建设的一个重要部分&#xff0c;一旦出现松动倾斜或凸起等异常问题&#xf…...

3D模型格式转换工具HOOPS Exchange对工业级3D产品HOOPS的支持与应用

一、概述 HOOPS Exchange是一套高性能模型转换软件库&#xff0c;可以给软件提供强大的模型的导入和导出功能&#xff0c;我们可以将其单独作为转换工具使用&#xff0c;也可以将其集成到自己的软件中。 同样&#xff0c;HOOPS 的其它产品&#xff0c;也离不开HOOPS Exchange…...

table 表体滚动, 表头、表尾固定

在开发报表中&#xff0c;如果报表数据行过多页面无法全部显示&#xff0c;或者内容溢出div&#xff0c;需要把表头和表尾固定表体滚动这样就可以在页面上全部显示&#xff0c;并且不会溢出div 效果&#xff1a;最终实现效果 代码&#xff1a;<!DOCTYPE html> <html&g…...

第57篇-某钩招聘网站加密参数分析【2023-10-31】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、网站分析1.X-S-HEADER参数2.请求参数data3.响应机密值data一、前言 网址: aHR0cHM6Ly93d3cubGFnb3UuY29t…...

C语言数据结构之数据结构入门

目录 数据结构介绍 数据结构发展史 何为算法 数据结构基础 基本概念和术语 四大逻辑结构&#xff08;Logic Structure&#xff09; 数据类型 理解复杂度概念 时间空间复杂度定义 度量时间复杂度的方法 程序运行时的内存与地址 编程预备 数据结构介绍 数据结构发展…...

如何快速掌握Switch文件管理神器:NSC_BUILDER完整新手指南

如何快速掌握Switch文件管理神器&#xff1a;NSC_BUILDER完整新手指南 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encr…...

从‘梳子’到‘低通’:图解CIC滤波器在5G和软件无线电里的那些事儿

从‘梳子’到‘低通’&#xff1a;图解CIC滤波器在5G和软件无线电里的那些事儿 在5G毫米波基站和软件无线电设备中&#xff0c;高速ADC采样产生的数据洪流就像未经处理的原油&#xff0c;而CIC滤波器正是第一道精炼装置。这种没有乘法器的奇特滤波器&#xff0c;凭借积分器和梳…...

从内存条到手机主板:盘点不同场景下过孔尺寸选择的实战经验与避坑指南

从内存条到手机主板&#xff1a;不同场景下过孔尺寸选择的实战经验与避坑指南 在高速PCB设计中&#xff0c;过孔的选择往往被工程师视为"细节问题"&#xff0c;但正是这些看似微小的设计决策&#xff0c;决定了产品的信号完整性、电源完整性和最终可靠性。从内存条的…...

Python 高级编程 014:isinstance 与 type 的核心差异

Python 高级编程 014&#xff1a;isinstance 与 type 的核心差异一、先明确&#xff1a;二者的核心定位差异二、实战代码&#xff1a;一眼看清区别1. 定义继承类2. 用 isinstance () 判断&#xff08;推荐&#xff09;3. 用 type () 判断&#xff08;易踩坑&#xff09;三、关键…...

避坑指南:CubeMX配置STM32F429三重ADC时,ADC2/3的DMA请求为啥点不了?附手动开启代码

STM32F429三重ADC配置疑难解析&#xff1a;当CubeMX无法启用ADC2/3的DMA请求时如何手动突破限制 在嵌入式开发中&#xff0c;STM32系列微控制器因其丰富的外设资源而备受青睐&#xff0c;其中ADC&#xff08;模数转换器&#xff09;模块的性能直接影响信号采集系统的精度与速度…...

拆解Xilinx UltraScale GTH收发器时钟网络:从QPLL/CPLL选择到TXUSRCLK生成的全链路分析

拆解Xilinx UltraScale GTH收发器时钟网络&#xff1a;从QPLL/CPLL选择到TXUSRCLK生成的全链路分析 在高速串行通信领域&#xff0c;时钟网络的稳定性直接决定了系统性能上限。当我们面对25Gbps甚至更高速率的设计需求时&#xff0c;Xilinx UltraScale架构中的GTH收发器便成为工…...

保姆级教程 | Gaussian优化后的能量值

背景Gaussian优化后会获得很多能量&#xff0c;应该如何区别这些能量的差异性步骤1. 电子能&#xff08;纯 SCF 能量&#xff0c;无热修正&#xff09;&#xff1a;单点能、对比电子结构、不加热效应grep Done 文件名.log这是纯电子能量&#xff0c;只包含电子结构&#xff0c;…...

对比官方直连体验Taotoken在模型调用稳定性上的差异感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比官方直连体验Taotoken在模型调用稳定性上的差异感受 作为一名长期与各类大模型API打交道的开发者&#xff0c;我习惯于直接调用…...

从三维点胶机到桌面雕刻机:一个STM32+FPGA运动控制核心板的复用实战

从三维点胶机到桌面雕刻机&#xff1a;STM32FPGA运动控制核心板的复用实战 在工业自动化设备开发领域&#xff0c;运动控制器的复用性与平台化设计正成为工程师们关注的焦点。当我们完成一款基于STM32FPGA架构的运动控制核心板开发后&#xff0c;如何快速将其适配到不同应用场景…...

VPU与NPU协同优化:边缘AI视觉处理的算力融合实践

1. 项目概述&#xff1a;边缘计算时代的算力融合新范式最近和几个做嵌入式AI和边缘设备的老朋友聊天&#xff0c;大家不约而同地都在讨论一个话题&#xff1a;在资源受限的边缘端&#xff0c;如何把有限的算力“榨干”&#xff0c;让模型跑得更快、更省电。聊着聊着&#xff0c…...