Linux中的算术运算

快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,博主会及时修改)

算术运算

算数运算符
+ - 加法减法
* / % 乘法 取商 取模(取余)  例如:5除以2 商是2 余数()是 1 5/2-----2 5%2-----1
** 幂运算 例如:5的2次方 5**2------25 5的3次方 5**3------125
++ -- 操作数自身增加或者减少1 例如: a++ ++a
&& || ! 逻辑与 逻辑或 取反
< > <= >= == =(对于字符串也相当于比较) != 小于 大于 小于等于 大于等于 等于 不等于
= += -= *= /= %= 赋值运算符 num=1 num+=1 num*=3
算数运算指令
(()) 	经常用于整数运算 效率很高
let 	用于整数运算 等同于 (())
expr 	可用于整数运算,还有其他额外功能
bc [需要先安装] Linux下的一个计算器程序(适合整数以及小数运算)
$[] 	用于整数运算
算数运算符与算数运算指令
((i=i+1)) 运算后赋值。将 i+1 的运算结果赋值给变量 i 若要打印 echo $((i=i+1))
i=$((i+1)) 将表达式运算后的结果赋值给 i
((8>7&&5==5)) 可以进行比较操作 还可以加入逻辑与 逻辑或 经常用于条件判断
echo $((2+1)) 打印输出运算表达式的结果 需要在 (())前添加 $
案例:
## 1.有关逻辑运算 真(1) 假(0)
[root@bai ~]# echo $((8>7))
1
[root@bai ~]# echo $((6>7))
0
## 2. 逻辑运算符的演示 && || !
[root@bai ~]# echo $((6>7&&3>4))
0
[root@bai ~]# echo $((6>7||3<4))
1
[root@bai ~]# echo $((7>6&&5>4))
1
[root@bai ~]# echo $[!((i<a||b>d))] #i=1;a=2;b=3;d=4
0
## 3.算数运算
[root@bai ~]# echo $((3+4))  # 加法
7
[root@bai ~]# echo $((3-4))  # 减法
-1
[root@bai ~]# echo $((3*4))  # 乘法
12
[root@bai ~]# echo $((4/3))  # 取商(取整)
1
[root@bai ~]# echo $((4%3))  # 取模(取余)
1
## 4. 幂运算
[root@bai ~]# echo $((5**2))
25
[root@bai ~]# echo $((5**3))
125
## 5. 给变量赋值
[root@bai ~]# num=100
[root@bai ~]# ((num=num*3))
[root@bai ~]# echo $num
300
## 6. 小数运算
[root@bai ~]# ((c=1+100+2**3+1.2))
-bash: ((: c=1+100+2**3+1.2: 语法错误: 无效的算术运算符 (错误符号是 ".2")
注意:
(()) 只能对整数进行运算 -----> 小数运算需要使用 bc
## 7.特殊符号运算
++ 变量自增1
-- 变量自减1
a++ 先对变量a操作,然后再让a自增1
++a 先让a自增1,然后再复制给
[root@bai ~]# a=5
[root@bai ~]# echo $((++a))
6
[root@bai ~]# echo $a
6
[root@bai ~]# b=5
[root@baizhi ~]# echo $((b++))
5
[root@baizhi ~]# echo $b
6
[root@bai ~]# c=5
[root@bai ~]# echo $((c--))
5
[root@bai ~]# echo $c
4
[root@bai ~]# d=5
[root@bai ~]# echo $((--d))
4
[root@bai ~]# echo $d
4
let的使用
## let 对变量的数值运算
[root@bai ~]# num=5
[root@bai ~]# let num=num+4
[root@bai ~]# echo $num
9
[root@bai ~]# let num+=1.2
-bash: let: num+=1.2: 语法错误: 无效的算术运算符 (错误符号是 ".2"
expr
## expr命令不太好用,基于空格传入参数 但是在shell中一些字符具备特殊含义
[root@bai ~]# expr 5+3
5+3
[root@bai ~]# expr 5 + 3
8
[root@bai ~]# expr 5 * 3
expr: 语法错误
[root@bai ~]# expr 5 \* 3
15
[root@bai ~]# expr 5 \> 6
0
[root@bai ~]# expr 8 \> 6
1
## 注意 : 数值与运算符号之间需要加空格 运算符很容易识别失败 需要转义
expr内置函数
length函数
## 案例
[root@bai ~]# expr length 123456789
9
[root@bai ~]# size="123456789"
[root@bai ~]# expr length $size
9
[root@bai ~]# size="123456789 " 
[root@bai ~]# expr length $size # 空格也算字符
9
expr模式匹配
expr指令支持模式匹配功能
两个特殊符号
: 冒号用于计算字符串的字符数量 gaosc 5个字符
.* 任意的字符串重复0次或多次
最后的模式 支持自定义
## 语法
expr 字符串 ":" ".*"
案例:
## 根据指定的字符获取 包括字符在内 字符及字符之前的 数量
[root@bai ~]# expr test.jpg ":" ".*"
8
[root@bai ~]# expr test.jpg ":" ".*j"
6
[root@bai ~]# expr test.jpg ":" ".*p"
7
[root@bai ~]# expr yc.png ":" ".*\.png"
6
[root@bai ~]# expr yc.png ":" ".*\.jpg"
0
[root@bai ~]# expr yc.jptg ":" ".*\.jpg"
0
[root@bai ~]# expr yc.jpggggggggggggggggggg ":" ".*\.jpg"
6
bc指令
# 1. 安装 bc 软件
yum -y install bc
# 2.使用计算器
bc
bc命令结合管道符来计算
案例1:
[root@bai ~]# echo "4*4"
4*4
[root@bai ~]# echo "4*4" | bc
16
[root@bai ~]# echo "4.2*4" | bc
16.8
[root@bai ~]# num=5
[root@bai ~]# echo $num*1.2 | bc
6.0
[root@bai ~]# result=`echo $num*1.2 | bc`
[root@bai ~]# echo $result
6.0
案例2:
## 计算1~1000的和
数学公式
1+2+3+4+5+6+...+999+1000
方法1:
## 1.先想办法获取这些操作数
[root@bai ~]# echo {1..1000}
## 2.将数字之间的空格替换为 +
[root@bai ~]# echo {1..1000} | tr " " "+"
## 3.将上一步处理以后的字符串交给 bc 进行运算
[root@bai ~]# echo {1..1000} | tr " " "+" | bc
500500
方法2:
[root@bai ~]# seq -s "+" 1000 | bc
500500
方法3:
[root@bai ~]# echo $((`seq -s "+" 1000`))
500500
###补充
seq 数字 # 打印1 2 3 4 5 ... 数字 数字之间分隔符默认为换行
seq -s 数字连接符 数字 # 指定连接符连接 1 2 3 4.... 数字
### 例如
seq -s "+" 10
输出 1+2+3+4+5+6+7+8+9+10
方法4:
[root@bai ~]# seq -s " + " 1000 | xargs expr
500500
read指令
可以在程序运行过程中,程序员输入数据
## 从标准输入中读取数据并赋值给指定变量
# 语法 read 变量名
[root@bai ~]# read var
123 # 借助键盘标注输入设备,录入数据以后 保存在 var变量中
[root@bai ~]# echo $var
123
## 从标准输入中输入多个值(用空格间隔),回车输入结束 第一个值给变量1 后续所有的值给变量2
## 语法 read 变量1 变量2
[root@bai ~]# read first last
123 456 789 000 111 222
[root@bai ~]# echo $first
123 # first保存第一个值
[root@bai ~]# echo $last
456 789 000 111 222 # 其余的值存入 last变量中
[root@bai ~]# read a b c # a b两个变量中各存一个值 其余赋值给 c
123 456 789 123
[root@bai ~]# echo $a
123
[root@bai ~]# echo $b
456
[root@bai ~]# echo $c
789 123## 若read后未指定变量名,则数据赋值给变量 REPLY
[root@bai ~]# read
123
[root@bai ~]# echo $REPLY
123## 把多个值存入一个变量中
语法:
read -a 变量
[root@bai ~]# read -a array
123 456 789 456 789 123 000
[root@bai ~]# echo ${array[0]}
123
[root@bai ~]# echo ${array[6]}
000
[root@bai ~]# echo ${array[@]}
123 456 789 456 789 123 000## 限定输入读取的时长
语法:read -t 时间 变量
## 测试数据
read.sh
#!/bin/bash
echo "请在五秒内完成密码录入并回车,请输入密码:"
read -t 5 passwd ## 在5秒内完成信息录入并回车 否则数据不会保存
echo "--------------------------"
echo "您输入的密码为:"$passwd
## 操作界面
[root@bai bai]# ./read.sh
请在五秒内完成密码录入并回车,请输入密码:
123456
--------------------------
您输入的密码为:123456## 允许输入反斜杠
语法:read -r 变量名
[root@bai bai]# read var
123 \
>
[root@bai bai]# read -r var
123 \ 123 \ 123## 默认是 回车键代表结束输入
read -d "符号" 变量名
[root@bai bai]# read -d ":" var
123 :[root@bai bai]# read -d ":" var
123
## 此时回车结束符被 冒号 覆盖## 从标准输入中读取两个字符 并存入变量 不需要按回车读取结束
语法:
read -n 2 变量名
[root@bai bai]# read -n 2 var
12

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

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

相关文章

就近值 reduce用法 时间戳与时间点对比循环查找

后台接口返回的13为时间戳 需要与数据data的time做对比&#xff0c;查找出最近的值 data的数据结构如下&#xff1a; 将&#xff1a;改为空格&#xff0c;变成数字之间的对比 //查找最近的时间getNearestTime(timestamp, data) {let date new Date(timestamp)let h date.ge…

openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程

文章目录 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程122.1 创建并执行涉及加密列的函数/存储过程 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程 密态支持函数/存储过程当前版本只支持sql和P…

postgreSQL中的高速缓存

1. 高速缓存简介 ​如下图所示&#xff0c;当一个postgreSQL进程读取一个元组时&#xff0c;需要获取表的基本信息&#xff08;例如&#xff1a;表的oid、索引信息和统计信息等&#xff09;及元组的模式信息&#xff0c;这些信息被分别记录在多个系统表中。通常一个表的模式信…

App分发的原理ipa分发系统需求

原理是指应用程序如何被分发到用户手中的过程。在App分发过程中&#xff0c;分发系统起着至关重要的作用。下面以iOS平台为例&#xff0c;介绍App分发原理及ipa分发系统需求。 在iOS平台上&#xff0c;App分发通常通过App Store进行。开发者将应用程序打包成IPA文件&#xff0…

报错资源不足,k8s使用containerd运行容器修改挂载点根目录换成/home

运行k8s一段时间发现存储不足报错 发现这里用的是根路径的挂载&#xff0c;修改一下

手撕无头单链表

&#x1f493; 博客主页&#xff1a;江池俊的博客⏩ 收录专栏&#xff1a;数据结构探索&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f525;编译环境&#xff1a;Visual Studio 2022&#x1f38…

【Python】jupyter notebook(学习笔记)

Jupyter Notebook初见 1、Jupyter Notebook介绍 web版的ipython 编程、写文档、记笔记、展示 格式.ipynb 2、为什么使用Jupyter Notebook? 画图方面的优势&#xff1a;图像的生成不会堵塞后面代码的执行数据展示方面的优势&#xff1a;生成的数据可以保存在文件中 3、J…

hive数仓-数据的质量管理

版本20231116 要理解数据的质量管理&#xff0c;应具备hive数据仓库的相关知识 文章目录 1.理解什么是数据的质量管理&#xff1a;2.数据质量管理的规划数据质量标准的分类 3.数据质量管理解决方案1.ods层的数据质量校验1&#xff09;首先在hive上建立一个仓库&#xff0c;添加…

oracle初步学习

先了解几个登录的方式 1.直接在cmd输入 sqlplus scott/tiger //登陆普通用户scott 2.输入sqlplus sys as sysdba 之后 紧接着让你输入口令&#xff0c;直接输入sys就行了 3.先输入sqlplus/nolog 在输入conn system/managerorcl 先在cmd窗口输入sqlplus/nolog &#x…

Linux输入设备应用编程(键盘,触摸屏,按键,鼠标)

目录 一 输入设备编程介绍 1.1 什么是输入设备呢&#xff1f; 1.2 什么是输入设备的应用编程&#xff1f; 1.3 input子系统 1.4 数据读取流程 1.5 应用程序如何解析数据 1.5.1 按键类事件&#xff1a; 1.5.2 相对位移事件 1.5.3 绝对位移事件 二 读取 struct input_e…

Swift爬虫程序

以下是一个简单的Swift爬虫程序&#xff0c;用于从前程无忧深圳地区招聘财务、会计的数据爬取数据&#xff1a; import Foundation import SwiftSoup// 创建一个请求对象&#xff0c;指定代理信息 var request URLRequest(url: URL(string: "https://www.51job.com/zh/c…

scipy实现单因素方差分析

经典例题 某校高二年级共有四个班&#xff0c;采用四种不同的教学方法进行数学教学&#xff0c;为了比较这四种教学法的效果是否存在明显的差异&#xff0c;期末统考后&#xff0c;从这四个班中各抽取 5 名考生的成绩&#xff0c;如下所示。 班级 一班 二班 三班 四班 …

LC142.环形链表II

/*** 题目链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle-ii/* 使用 map集合来存储链表的结点&#xff0c;在每次添加节点的时候使用map.containsValue()方法进行判断&#xff0c;* 如果存在相同的节点&#xff0c;就说明有环&#xff0c;然后返回当前节点* …

【软件安装】Centos系统中安装docker容器(华为云HECS云耀服务器)

这篇文章&#xff0c;主要介绍Centos系统中安装docker容器&#xff08;华为云HECS云耀服务器&#xff09;。 目录 一、安装docker 1.1、卸载旧版本docker 1.2、更新repo镜像 1.3、安装依赖包 1.4、添加docker-ce镜像 1.5、安装docker-ce 1.6、查看docker安装版本 1.7、…

Maven介绍及仓库配置

目录 一.Maven 1.介绍 坐标 仓库 1&#xff09;中央仓库 2&#xff09;本地仓库 3&#xff09;私服 配置国内源 配置过程 二.Maven功能 2.项目构建 3.依赖管理 Maven Help插件 安装 ​使用 一.Maven 1.介绍 坐标 唯一的&#xff0c;通过以下代码的三个键值对确…

【AI视野·今日CV 计算机视觉论文速览 第277期】Fri, 27 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 27 Oct 2023 Totally 93 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers A Coarse-to-Fine Pseudo-Labeling (C2FPL) Framework for Unsupervised Video Anomaly Detection Authors Anas Al lahham…

微信小程序wxss定位/选择/查找元素的几种方式

wxss定位、选择、查找元素的几种方式与css类似&#xff0c;下面介绍常用的几种&#xff1a; 选择器样例样例描述.class.intro选择所有拥有 class"intro" 的组件#id#firstname选择拥有 id"firstname" 的组件elementview选择所有 view 组件element, element…

『Vscode 自定义折叠代码』

vscode 编辑器内部的代码折叠&#xff0c;都是规定好的代码块的&#xff0c;比较 死板。 假设我想将任意的代码&#xff0c;都全部折叠起来&#xff0c;该如何操作呢&#xff1f; 答案&#xff1a;#region 和 #endregion。 ✅ CSS / Less / Scss 代码中&#xff0c;示例如下&…

Spring-IoC与DI入门案例

IoC入门案例 IoC入门案例思路分析 管理什么&#xff1f;&#xff08;Service与Dao&#xff09;如何将被管理的对象告知IoC容器&#xff1f;&#xff08;配置&#xff09;被管理的对象交给IoC容器&#xff0c;如何获取到IoC容器&#xff1f;&#xff08;接口&#xff09;IoC容…