shell编程(三)—— 运算符

news2024/11/15 15:32:54

和其他编程语言一样,bash也有多种类型的运算符,本篇对bash的相关运算符做简单介绍。

一、运算符

1.1 算术运算符

常见的算术运算符,如加(+)、减(-)、乘(*)、除(/)、取余(%)、赋值(=)、相等(==)、不相等(!=)。
bash中使用expr 来进行算术运算。如将算术表达式放在方括号之间,需要有空格。

x=15
y=30

val=`expr ${x} + ${y}`
echo "${x} + ${y} = ${val}"

if [[ ${x} != ${y} ]]
then
    echo "${x} != ${y}"
fi

在这里插入图片描述

1.2 关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

常用关系运算符如下

运算符说明
-eq检测两个数是否相等
-ne检测两个数是否不相等,不相等返回 true
-gt检测左边的数是否大于右边的
-lt检测左边的数是否小于右边的
-ge检测左边的数是否大于等于右边的
-le检测左边的数是否小于等于右边的
x=10
y=30

if [[ ${x} -lt ${y} ]]
then
    echo "${x} -lt ${y}: x 小于 y"
fi

在这里插入图片描述## 1.3 布尔运算符
如下列出常用的布尔运算符

运算符说明
非运算
-o或运算,
-a与运算,&& 也表示与运算
x=10
y=30

if [[ ${x} -lt 20 && ${y} -gt 20 ]]
then
    echo "${x} 小于20 且 ${y}大于20"
fi

if [[ ${x} -lt 20 || ${y} -lt 20 ]]
then
    echo "${x} 小于20 或 ${y}小于20"
fi

if ! [[ ${x} -eq 20 ]]
then
    echo "${x} 不等于20"
fi

在这里插入图片描述

1.4 字符串运算符

常用字符串运算符如下:

运算符说明
=检测两个字符串是否相等
!=检测两个字符串是否不等
-z检测字符串长度是否为0
-n检测字符串长度是否不为0
str检测字符串是否为空
x="xiaoyuzhou"
y=""

if [[ -z ${x} ]]
then
    echo "-z ${x} 字符串长度为0"
else
    echo "-z ${x} 字符串长度不为0"
fi

if [[ -n ${y} ]]
then
    echo "-z ${y} 字符串长度不为0"
else
    echo "-z ${y} 字符串长度为0"
fi

if [[ ${y} ]]
then
    echo "-z ${y} 字符串不为空"
else
    echo "-z ${y} 字符串为空"
fi

在这里插入图片描述

1.5 文件测试运算符

文件测试运算符用于检测文件的各种属性

操作符说明
-b file检测文件是否为块设备文件
-c file检测文件是否是字符设备文件
-d file检测文件是否是目录
-f file检测文件是否是普通文件(非目录,非设备文件)
-r file检测文件是否可读
-w file检测文件是否可写
-x file检测文件是否可执行
-s file检测文件是否为空
-e file检测文件(或目录)是否存在

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

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

相关文章

使用Leaflet-canvas-label进行个性化标注实践详解

目录 前言 一、leaflet-canvas-label属性 1、地图展示属性 2、Canvas文本标注属性 3、事件列表 二、属性设置实战 1、标注放大比例 2、字体颜色和方向偏移 3、标注文字透明色设置 4、标注显示层级 三、事件绑定 1、颜色改变 2、事件绑定解析 3、标记初始化的一个小…

html5实现个人网站源码

文章目录 1.设计来源1.1 网站首页页面1.2 个人工具页面1.3 个人日志页面1.4 个人相册页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/139564407 ht…

427. 建立四叉树

427. 建立四叉树 题目难度-中等1. dfs分治 题目难度-中等 给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid 。 你需要返回能表示矩阵 grid 的 四叉树 的根结点。 四叉树数据结构中,每个内部节点只有四个子节点。此外…

音程与和弦 音程协和度

2个音符之间的音程计算 1234567,1到7的音程是7度,音程是计算总长度,看音级的个数。 Cubase中的音程计算 下面一个是4度,一个是3度,格子中深色的行就是黑键行。 根据半音数量来确定对应音程的专业术语叫法 旋律音程、…

国产嵌入式仪器模块:电子负载模块及自动化测试软件

• 输入电流在 0–5 A 范围内线性可调 • 最大功率达 150 W,满足多种定制化应用场景 • 支持 CC/CR/CV 多种工作模式 • 支持多种辅助模块(如 PD 控制、信号调制、二维码扫描) 应用场景 • 负载能力测试(电源或信号&#xff0…

opencv--使用opencv实现旋转角度的模板匹配

下面的例子是简单的使用opencv 实现的模板匹配流程,其中时间性能和精确度还需要调整,如果直接使用会出问题,所以这个只是例子,根据代码原理可以实现尺度变化的模板匹配和旋转尺度变化同时,具体根据实现的旋转代码进一步…

【Unity学习笔记】反射

文章目录 前言反射通过反射获取类型 Unity中的反射用反射在Unity中动态加载 前言 在我平时做项目的时候,由于我们做的项目都是很简单的,所以不怎么接触反射机制。最早了解反射机制是关于Invoke的时候,知道可以通过方法名来直接进行Invoke调用…

【会议征稿,IEEE出版】第三届能源与电力系统国际学术会议 (ICEEPS 2024,7月14-16)

如今,全球能源行业正面临着前所未有的挑战。一方面,加快向清洁、可再生能源转型是遏制能源环境污染问题的最佳途径之一;另一方面,电力系统中新能源发电、人工智能技术、电力电子装备等被广泛应用和期待,以提高能源可持…

汇编:结构体

在32位汇编中,结构体(structures)用于组织和管理复杂的数据类型,结构体可以包含多个不同类型的数据项(成员);在MASM(Microsoft Macro Assembler)中,使用结构体…

Qt——升级系列(Level Four):控件概述、QWidget 核心属性、按钮类控件

目录 控件概述 QWidget 核心属性 核心属性概览 enabled geometry windowTitle windowIcon windowOpacity cursor font toolTip focusPolicy styleSheet 按钮类控件 Push Button Radio Buttion Check Box Tool Button 控件概述 Widget 是 Qt 中的核⼼概念. 英⽂原义是 "…

10.结构体、共用体、枚举

头文件&#xff1a;#include<string.h> //struct&#xff1a;结构体关键字 //stu&#xff1a;结构体类型名&#xff0c;指定了一个结构体类型&#xff0c;它相当于一个模型&#xff0c;但其中并无具体数据&#xff0c;系统对之也不分配实际内存单元//使用结构体类型必须是…

CDR2024软件破解Keygen激活工具2024最新版

CorelDRAW Graphics Suite2024最新版&#xff0c;这是一款让我爱不释手的图形设计神器&#xff01;作为一个软件评测专家&#xff0c;我一直在寻找一款能够提升我的设计效率和创造力的工具。而这款软件&#xff0c;简直就是为我量身定制的&#xff01;&#x1f389; 「CorelDR…

北航第五次数据结构与程序设计编程题复习

北航第五次数据结构与程序设计编程题复习 树叶节点遍历&#xff08;树-基础题&#xff09;计算器&#xff08;表达式计算-表达式树实现&#xff09;服务优化词频统计&#xff08;树实现&#xff09; 树叶节点遍历&#xff08;树-基础题&#xff09; 【问题描述】 从标准输入中…

OpenCV学习(4.9) OpenCV中的轮廓

1.目标 了解轮廓是什么。学习寻找轮廓&#xff0c;绘制轮廓等您将看到以下功能&#xff1a;**cv.findContours()** &#xff0c;**cv.drawContours()* 2.什么是轮廓 轮廓可以简单地解释为连接具有相同颜色或强度的所有连续点(沿边界)的曲线。轮廓是用于形状分析以及对象检测…

嵌入式学习——Linux高级编程复习(互斥锁、信号量、管道、信号)——day41

1. 同步和异步 1.1 同步 多个任务在某一时刻,先后执行顺序可以被确定 同步操作要求一系列操作严格按照顺序执行&#xff0c;一个操作只有在前一个操作完成之后才能开始。在计算机编程中&#xff0c;这意味着当一个程序或线程发出一个请求或调用后&#xff0c;它会暂停执行&…

java自动化之java基础03-09java基础之数组

数组 1、定义 数组是一种用于存储固定大小的同类型数据的数据结构 1&#xff09;固定大小 2&#xff09;同类型数据的存储 2、声明数组 1&#xff09;数据类型[] 变量名称&#xff1b; 例如&#xff1a;int[] numsArry; 2&#xff09;数据类型 变量名称[]; 例如&#xf…

27.机会成本

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/677 题目描述 明天有 𝑛n 门考试,今晚只…

【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const和取地址操作符重载

目录 一、 日期类的实现 Date.h 1.1 GetMonthDay函数&#xff08;获取某年某月的天数&#xff09; 问&#xff1a;这个函数为什么不和其他的函数一样放在Date.cpp文件中实现呢&#xff1f; 1.2 CheckDate函数&#xff08;检查日期有效性&#xff09;、Print函数&#xff08;…

计算机毕业设计 | SpringBoot宠物医院管理 宠物商城购物系统(附源码)

写在前面 Le Dao宠物医院管理系统是一个超大型的&#xff0c;完成度很高的&#xff0c;集宠物医疗、宠物美容、宠物交易、宠物周边等各种功能于一身的&#xff0c;权限涵盖普通用户、医生、化验师、美容师、仓库主管、采购员等多种角色于一体的大型宠物医疗&#xff0c;购物系…

Java 数据类型 -- Java 语言的 8 种基本数据类型、字符串与数组

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 004 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…