首页 > 系统相关 >SHELL之数值运算

SHELL之数值运算

时间:2024-08-20 11:04:41浏览次数:15  
标签:SHELL 运算 ++ 数值 echo let root MissHou

【四则运算符号】

表达式 举例
$(( )) echo $((1+1))
$[ ] echo $[10-5]
expr expr 10 / 5 (运算符左右有空格)
let n=1;let n+=1 等价于 let n=n+1

一、整数运算
1、基本运算类别

  • 加法:+
  • 减法:-
  • 乘法:*
  • 整除:/
  • 取余数:%

2、expr运算工具

  • 加法:+
  • 减法:-
  • 乘法:*
  • 整除:/
  • 取余数:%

3、$[ ]算式替换

使用$[ ] 或 $(( ))表达式

  • 格式:$[整数1 运算符 整数2 .. ..]
  • 乘法操作*无需转译,运算符两侧可以无空格
  • 引用变量可省略$符号
  • 计算结果替换表达式本身,可结合echo命令输出

注意:

脚本第2行
	if [ $# -lt 1  -o $1 -gt 9  ] ; then
如果替换为 :
	if (( $# <  1  ||  $1  >  9  )); then
结果会怎么样 ? 为什么 ? 
在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”。但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)

&&,逻辑的and的意思, -a也是这个意思;
||,逻辑的or的意思, -o 也是这个意思

[root@scp1 ~]# x=30
[root@scp1 ~]# echo $[x+20]
50
[root@scp1 ~]# echo $((x+10)),$((x*60))
40,1800

4、变量的自增/减等操作

使用$[]替换,或let命令完成
结合echo命令查看结果

二、小数运算

1、整数运算的局限性

  • bash内建机制仅支持整数值运算
  • expr命令、$[] 算式运算不支持有小数的运算

2、使用bc实现小数的运算

多数linux系统默认安装此工具

  • 支持高精度的数值运算
  • 直接运行bc可进入交互式运算界面,quit退出
  • 设置scale=n 可约束小数位

结合管道向bc发送表达式

  • 多个表达式以分号分隔
  • 通过echo命令+管道传递要计算的表达式

小数值的比较
基本用法

  • echo "数值1 比较符 数值2" | bc
  • 如果表达式成立,则返回的计算结果为1,否则返回0
  • 常见的比较操作:>、>=、<、<+、==、!=

三、了解i++和++i

  • ++ 是后缀自增运算符,表示在表达式求值后,变量 i 的值增加 1。
  • ++j 是前缀自增运算符,表示在表达式求值前,变量 j 的值增加 1。

在表达式 let x=i++ 中,i 的值在赋值给 x 后增加,所以 x 得到的是 i 增加前的值。而在表达式 let y=++j 中,j 的值在赋值给 y 之前就已经增加了,所以 y 得到的是 j 增加后的值。

1、对变量的值的影响

[root@MissHou ~]# i=1
[root@MissHou ~]# let i++
[root@MissHou ~]# echo $i
2
[root@MissHou ~]# j=1
[root@MissHou ~]# let ++j
[root@MissHou ~]# echo $j
2

2、对表达式的值的影响

[root@MissHou ~]# unset i j
[root@MissHou ~]# i=1;j=1
[root@MissHou ~]# let x=i++         先赋值,再运算
[root@MissHou ~]# echo $x
1
[root@MissHou ~]# let y=++j         先运算,再赋值
[root@MissHou ~]# echo $y
2
[root@MissHou ~]# echo $i
2
[root@MissHou ~]# echo $j
2

标签:SHELL,运算,++,数值,echo,let,root,MissHou
From: https://www.cnblogs.com/OpenSourceSite/p/18368786

相关文章

  • 逻辑运算符
    逻辑运算符&&||!packageoperator;/***@version:javaversion1.8*@Author:MrTheroux*@description:*@date:2024-08-209:33*/publicclassDemo05{publicstaticvoidmain(String[]args){booleana=true;booleanb......
  • SHELL之变量
    一、脚本1、shell组成#!脚本声明(使用哪种解释器)#注释信息脚本内容注意: 如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用:#!/bin/env解释器 #!/bin/envbash2、执行脚本方式sh-x脚本文件路径source脚本文件路......
  • 【数据结构与算法第一章】编程基础:变量与数据类型、指针、结构体、数组与链表、程序结
    目录【数据结构与算法第一章】编程基础1.1变量与数据类型1.2指针1.3结构体1.4数组和链表1.5程序结构1.6函数中参数的传递1.7C语言中运算符的含义【数据结构与算法第一章】编程基础1.1变量与数据类型变量:    ①在C语言中,所有变量必须先声明后使用......
  • C++运算符重载
    文章目录一、运算符重载1、规定2、operator关键词的使用二、赋值运算符的重载1、功能2、使用一、运算符重载1、规定C++允许我们对类类型使用运算符,但要我们自己通过运算符重载完成类类型的运算,如果没有对应的运算符重载就会报错。运算符重载需要使用特殊关键词......
  • PowerShell 脚本是什么?
     目录前言什么是PowerShell?PowerShell的历史PowerShell脚本的定义PowerShell的基本语法1.命令和Cmdlet2.变量3.控制结构4.函数5.模块PowerShell脚本的应用场景1.系统管理2.数据处理3.网络管理4.自动化测试5.云计算PowerShell脚本的编写与......
  • Oracle运算符:从等号到空值运算的使用技巧
    在Oracle数据库中,关系运算符和逻辑运算符用于在SQL查询中定义条件。1.等号(=)运算符作用:用于精确匹配字段的值。适用场景:适用于比较数值、字符串、日期等数据类型,要求条件严格相等。例子:SELECTename,salFROMempWHEREdeptno=10;查询部门编号为10的所有员工姓名和......
  • 基本运算符
    基本运算符packageoperator;/***@version:javaversion1.8*@Author:MrTheroux*@description:*@date:2024-08-1917:06*/publicclassDemo01{publicstaticvoidmain(String[]args){inta=10;intb=20;intc=......
  • [Python学习日记-9] Python中的运算符
    简介        计算机可以进行的运算有很多种,但可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,而本篇我们暂只介绍算数运算、比较运算、逻辑运算、赋值运算算数运算一、运算符描述        以下......
  • 第二周,linux基础_vim、grep、sed、shell
    总结学过的权限,属性及ACL相关命令及选项,示例。结合vim几种模式,学会使用vim几个常见操作。1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。3)打开文件......
  • 【C总集篇】第四章 运算符,表达式和语句
    文章目录第四章运算符,表达式和语句运算符赋值运算符:=加法运算符:+减法运算符:-符号运算符:-和+乘法运算符:*除法运算符:/size_t类型求模运算符:%递增运算符:++递减运算符:--移位运算符左移操作符:<<右移操作符:>>位操作符按位与:&基础概念**清零**清除高位/低位保留指定......