bash之基本运算符

一.算术运算符

vim test.sh

#!/bin/basha=10
b=20val=`expr $a + $b`
echo "a + b : $val"val=`expr $a - $b`
echo "a - b : $val"val=`expr $a \* $b`
echo "a * b : $val"val=`expr $b / $a`
echo "b / a : $val"val=`expr $b % $a`
echo "b % a : $val"if [ $a == $b ]
thenecho "a == b"
fi
if [ $a != $b ]
thenecho "a != b"
fi

运行:

bash test.sha + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a != b

        原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
        expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
        注意使用的反引号(esc 键下边)
        表达式和运算符之间要有空格 $a + $b 写成 $a+$b 不行
        条件表达式要放在方括号之间,并且要有空格 [ $a == $b ] 写成 [$a==$b] 不行
        乘号(*)前边必须加反斜杠(\)才能实现乘法运算

二.关系运算符

  1. -eq
    • 含义:等于(Equal)
    • 示例:if [ $a -eq $b ]; then echo "a等于b"; fi,当$a的值等于$b的值时,条件为真,执行echo语句。
  2. -ne
    • 含义:不等于(Not Equal)
    • 示例:if [ $a -ne $b ]; then echo "a不等于b"; fi,当$a的值不等于$b的值时,条件为真。
  3. -lt
    • 含义:小于(Less Than)
    • 示例:if [ $a -lt $b ]; then echo "a小于b"; fi,当$a的值小于$b的值时,条件为真。
  4. -le
    • 含义:小于等于(Less Than or Equal)
    • 示例:if [ $a -le $b ]; then echo "a小于等于b"; fi,当$a的值小于或等于$b的值时,条件为真。
  5. -gt
    • 含义:大于(Greater Than)
    • 示例:if [ $a -gt $b ]; then echo "a大于b"; fi,当$a的值大于$b的值时,条件为真。
  6. -ge
    • 含义:大于等于(Greater Than or Equal)
    • 示例:if [ $a -ge $b ]; then echo "a大于等于b"; fi,当$a的值大于或等于$b的值时,条件为真。

vim test2.sh

#!/bin/basha=10
b=20if [ $a -eq $b ]
thenecho "$a -eq $b : a == b"
elseecho "$a -eq $b: a != b"
fi
bash test2.sh10 -eq 20: a != b

三.逻辑运算符

1. “&&”(与运算符)
        功能:当使用 “&&” 连接两个命令或条件表达式时,只有当左边的命令或条件为真时,才会执行右边的命令或检查右边的条件。如果左边为假,则右边的操作不会执行,整个表达式的值为假。
示例:
command1 && command2:先执行command1,如果command1执行成功(返回值为 0,在 Bash 中表示真),则接着执行command2;如果command1失败(返回非 0 值),则command2不会执行。
[ $a -gt 10 ] && [ $b -lt 20 ]:当变量$a的值大于 10 并且变量$b的值小于 20 时,整个表达式为真。
2. “||”(或运算符)
        功能:当使用 “||” 连接两个命令或条件表达式时,如果左边的命令或条件为假,则会执行右边的命令或检查右边的条件。只要左边或右边其中一个为真,整个表达式的值就为真。
示例:
command1 || command2:先执行command1,如果command1失败(返回非 0 值),则接着执行command2;如果command1成功(返回值为 0),则command2不会执行。
[ $a -eq 5 ] || [ $a -eq 10 ]:当变量$a的值等于 5 或者等于 10 时,整个表达式为真。

四.字符串运算符

=  检测两个字符串是否相等,相等就返回true

!= 检测两个字符串是否相等,不相等就返回true

-z 检测两个字符串长度是否为0,为0就返回true

-n 检测两个字符串长度是否为0,不为0就返回true

str 检测字符串是否为空,不为空返回true

#!/bin/basha="abc"
b="efg"if [ $a = $b ]
thenecho "$a = $b : a == b"
elseecho "$a = $b: a != b"
fi
if [ -n $a ]
thenecho "-n $a : The string length is not 0"
elseecho "-n $a : The string length is  0"
fi
if [ $a ]
thenecho "$a : The string is not empty"
elseecho "$a : The string is empty"
fi

结果:

abc = efg: a != b
-n abc : The string length is not 0
abc : The string is not empty

五.文件测试运算符

#!/bin/bashfile="/home/shiyanlou/test.sh"
if [ -r $file ]
thenecho "The file is readable"
elseecho "The file is not readable"
fi
if [ -e $file ]
thenecho "File exists"
elseecho "File not exists"
fi

结果:

The file is readable
File exists

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

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

相关文章

TH-OCR:强大的光学字符识别工具与车牌识别应用

在当今数字化的时代,高效准确地识别文本和图像中的字符变得至关重要。TH-OCR(清华 OCR)作为一款优秀的光学字符识别软件,以其卓越的性能和广泛的应用场景,受到了众多用户的青睐。其中,车牌识别功能更是在交…

Discuz | 全站多国语言翻译和繁体本地转换插件 特色与介绍

Discuz全站多国语言翻译和繁体本地转换插件 特色与介绍 特殊:集成了2个开源库1.多国语言翻译 来自:github.com/xnx3/translate特色:无限使用接口 免费使用2个翻译端 带有一级和二级缓存 实现秒翻译 2.简体 繁体(台湾&#xff09…

springboot项目多个数据源配置 dblink

当项目中涉及到多个数据库连接的时候该如何处理? 在对应的配置文件,配置对应的数据库情况,不过我确实没咋测试对于事务的处理我可以后续在多做测试 配置文件中配置对应的数据源 然后再使用的时候使用这个 DS(“pd_ob”)注解。 然后又长知识…

《计算机视觉》—— 基于dlib库的人检检测

文章目录 一、dlib库的安装1. 通过PyCharm的Settings安装2. 通过Anaconda安装(适用于Windows等操作系统)3. 通过命令行安装4.懒人安装 二、基于dlib库的人检测1.对图像进行人脸检测2.打开电脑摄像头,检测人脸 一、dlib库的安装 在PyCharm中&…

Vulnhub:Me-and-My-Girlfriend-1

一.环境启动/信息收集 (1)根据物理地址用nmap的主机发现功能得出IP地址 nmap -P 192.168.138.0/24 //同网段下主机发现得到IP为192.168.138.180(2)做nmap的目录扫描和端口扫描来发现其他站带以及信息 nmap -p- 192.168.138.180 …

使用CSS Flexbox创建简洁时间轴

使用CSS Flexbox创建简洁时间轴 在网页设计中,时间轴是一种常见且有效的方式来展示事件的顺序和进程。本文将介绍如何使用CSS Flexbox创建一个简洁优雅的时间轴,无需复杂的JavaScript代码。 基本HTML结构 首先,我们需要创建基本的HTML结构: html复制<div class"ti…

Ansible自动化工具

一、Ansible概述 1.1 什么是Ansible Ansible 是一个开源的自动化工具&#xff0c;用于配置管理、应用程序部署和任务自动化。它让你可以通过编写简单的 YAML 文件&#xff08;剧本&#xff0c;Playbooks&#xff09;&#xff0c;轻松管理和配置多个服务器。Ansible 的特点是无…

第十七周:机器学习笔记

第十七周周报 摘要Abstratc一、机器学习——生成式对抗网络&#xff08;Generative Adversarial Networks | GAN&#xff09;——&#xff08;中&#xff09;1. GAN 的理论介绍2. 用JS散度训练存在的问题3. WGAN 算法4. 拓展——流体 总结 摘要 本周周报主要对GAN进行了详细的…

学习笔记——交换——STP(生成树)工作原理

三、工作原理 STP的基本原理是在一个有二层环路的网络中&#xff0c;交换机通过运行STP&#xff0c;自动生成一个没有环路的网络拓扑。这个无环网络拓扑也叫做STP树(STP Tree)&#xff0c;树节点为某些交换机&#xff0c;树枝为某些链路。当网络拓扑发生变化时&#xff0c;STP…

js简单基础笔记

一 . js特点 1. Js是一门解释型语言&#xff0c;不用编译&#xff0c;而是直接执行 2. js是一门动态语言&#xff0c;其中的任何内容都是不确定的 3. 语法结构和Java&#xff0c;c都很像 4. ​ js是一门面向对象的语言 5.js严格区分大小写 二 . js使用 1…

TiDB 新版本:更稳、更快、更好的数据库体验

作者&#xff1a; TiDB社区小助手 原文来源&#xff1a; https://tidb.net/blog/2d33d7db 本文内容出自&#xff1a;PingCAP 高级顾问 蓝功儒老师 在 9 月 21 日 TiDB 新版本 Meetup 中&#xff0c;PingCAP 高级顾问蓝功儒老师为我们带来了关于 TiDB 新版本的深入分享。TiD…

基于LORA的一主多从监测系统_数据发送

数据上传我这里使用了问询的方式&#xff0c;这样的好处一是可以用来统计节点的存活状态&#xff0c;二是可以避免冲突&#xff0c;主节点通过向从节点发送问询帧&#xff0c;从节点收到问询帧后开始向主节点发送数据&#xff0c;同时我们也可以加入不同的帧类型&#xff0c;比…

4.three.js网格模型介绍和绘制基础点、线、面

4.three.js网格模型介绍和绘制基础点、线、面 1、计算机中3D世界的组成 在计算机世界里&#xff0c;3D世界是由点组成&#xff0c;两个点能够组成一条直线&#xff0c;三个不在一条直线上的点就能够组成一个三角形面&#xff0c;无数三角形面就能够组成各种形状的物体&#x…

Linux基础项目开发day05:量产工具——页面系统

文章目录 一、数据结构抽象page_manager.h 二、页面管理器page_manager.c 三、单元测试1、main.page.c2、page_test.c3、Makefile修改3.1、unittest中的Makefile3.2、page中的Makefile 四、上机实验 前言 前面实现了显示、输入、文字、UI系统&#xff0c;现在我们就来实现页面的…

Axure树形菜单展开与折叠

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;Axure树形菜单展开与折叠 主要内容&#xff1a;树形菜单制作——层级关系——隐藏与显示——值的变化——多层交互 应用场景&#xff1a;关系树、菜…

Python学习的自我理解和想法(15)

学的是b站的课程&#xff08;千锋教育&#xff09;&#xff0c;跟老师写程序&#xff0c;不是自创的代码&#xff01; 今天是学Python的第15天&#xff0c;从今天开始&#xff0c;每天一到两个常用模块&#xff0c;更完恢复到原来的&#xff0c;开学了&#xff0c;时间不多&am…

Java 直接获取 pom.xml 配置的属性值

Java 直接获取 pom.xml 配置的属性值 1.需求描述2.代码示例3.结果演示 系统&#xff1a;Win10 JDK&#xff1a;1.8.0_351 IDEA&#xff1a;2022.3.3 1.需求描述 在开发一个 SpringBoot 项目的时候&#xff0c;需要从 pom.xml 中获取配置的 artifactId&#xff0c;name&#xf…

vscode配置ssh远程连接服务器

注意&#xff1a;重启软件或重启电脑&#xff0c;解决很多问题 一. vscode配置ssh vscode通过ssh连接服务器&#xff08;吐血总结&#xff09;_vscode ssh-CSDN博客 二. VScode无法远程连接主机问题 VSCode远程连接服务器报错&#xff1a;Could not establish connection to…

HCIP-HarmonyOS Application Developer 习题(十六)

&#xff08;判断&#xff09;1、HiLink通过分布式软总线的方式连接所有设备&#xff0c;强能力设备可对弱能力设备进行设备虚拟化&#xff0c;将弱设备当做本机设备直接调用。 答案&#xff1a;错误 分析&#xff1a;HiLink 主要针对的是应用开发者与第三方设备开发者&#xf…

力扣 中等 143.重排链表

文章目录 题目介绍题解 题目介绍 题解 class Solution {public void reorderList(ListNode head) {ListNode mid middleNode(head);ListNode head2 reverseList(mid);while (head2.next ! null) {ListNode nxt head.next;ListNode nxt2 head2.next;head.next head2;head2.…