shell中的运算(小说总是善良的让错过的人再相遇)

简介: shell中的运算(小说总是善良的让错过的人再相遇)

目录



shell运算


1.1 基本运算法则


1.2 运算表达式


1.3 变量的自增/自减等操作


1.4 let


1.5 小数运算 bc


1.6 expr


1.7 seq


小贴士


总结


shell运算



1.1 基本运算法则


四则运算


加法:num1 + num2

减法:num1 - num2

乘法:num1 * num2

整除:num1 / num2


取余运算


求模:num1 % num2


1.2 运算表达式


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


[root@localhost ~]# echo $[1+8]
9
[root@localhost ~]# echo $[2*6]
12
[root@localhost ~]# echo $[12-8]
4
[root@localhost ~]# echo $[11/3]
3
[root@localhost ~]# echo $[11%3]
2
[root@localhost ~]# x=2
[root@localhost ~]# y=3
[root@localhost ~]# echo $[x+y]
5
[root@localhost ~]# echo $[x*y]
6
[root@localhost ~]# echo $((x*y))
6
[root@localhost ~]# 

image.png

image.png


1.3 变量的自增/自减等操作


简写表达式 完整表达式
i++ i=i+1
i-- i=i-1
i+=2 i=i+2
i-=2 i=i-2
i*=2 i=i*2
i/=2 i=i/2
i%=2 i=i%2


[root@localhost ~]# x=2
[root@localhost ~]# echo $[x+=4]
6
[root@localhost ~]# echo $x
6
[root@localhost ~]# echo $[x*=3]
18
[root@localhost ~]# echo $x
18
[root@localhost ~]# 

image.png


1.4 let


不返回结果,需要借助echo


[root@localhost ~]# let i=2*3   #不显示结果,需要借助echo命令
[root@localhost ~]# echo $i
6
[root@localhost ~]# let i=2+3
[root@localhost ~]# echo $i
5
[root@localhost ~]# let i+=3   #也支持简写
[root@localhost ~]# echo $i
8
[root@localhost ~]# let i/=2;echo $i  #使用;可以在一行操作
4
[root@localhost ~]# 

image.png


1.5 小数运算 bc


bash内建机制仅支持整数运算,不支持小数运算


我们可以通过计算器软件bc实现小数运算


如果没有该软件需要yum安装

bc支持交互式和非交互式两种方式,scale=n可以约束小数位

支持比较操作符:>、>=、<、<=、==、!=


image.png

image.png


#非交互式运算,使用管道传给bc
[root@localhost ~]# echo "1.2+2.3;2.3*2.5"|bc
3.5
5.7
[root@localhost ~]# echo "scale=2;1.2+2.3;2.3*2.5"|bc  #当需要指定小数位数时,scale写在前面
3.5
5.75
[root@localhost ~]# echo "scale=2;9/3"|bc
3.00

image.png

image.png


1.6 expr


expr命令的英文全称是“expression”,即是表达式的意思,作用是一个命令行的计数器,常用于在UNIX/LINUX系统中求表达式变量的值,一般用于整数值,也可用于字符串


expr不可计算小数,并且变量和运算符之间需要空格分隔


常用参数:


空格 隔开每个项
\(反斜杠) 放在 shell 特定的字符前面
“”(引号) 对包含空格和其他特殊字符的字符串要用引号括起来


#计算字符串的长度
[root@localhost ~]# expr length "this is a test"
14
#抓取字符串
[root@localhost ~]# expr substr "this is a test" 3 5 
is is
#抓取第一个字符数字串出现的位置
[root@localhost ~]# expr index "sarasara" a 
2
#整数运算:
[root@localhost ~]# expr 14 % 9
5
[root@localhost ~]# expr 30 / 3 / 2
5
#使用expr进行四则运算:
#注意:使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义
[root@localhost ~]# expr \( 10 + 10 \) \* 2 + 100 
140

image.png


1.7 seq


seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式、宽度、分割符号进行控制


常用参数:


-f 格式
-s 字符串
-w 在列前添加0 使得宽度相同


#产生5以内的整数:
[root@localhost ~]# seq 5
1
2
3
4
5
#产生98~101之间的整数,并且要求数字之间的分隔符为”:::”:
[root@localhost ~]# seq -s ":::" -f "%03g" 98 101
098:::099:::100:::101


小贴士


生成一个20以内的随机数


[root@localhost ~]# expr $[RANDOM % 20 + 1]
10
[root@localhost ~]# echo $[RANDOM % 20 + 1]
4

image.png


总结



默认bash仅支持整数运算


可以借助bc计算器进行小数运算

目录
相关文章
|
6月前
|
Shell C++ 开发者
【Shell 编程指南】Shell运算操作符之$[]详解
【Shell 编程指南】Shell运算操作符之$[]详解
49 0
|
5月前
|
Shell Linux Python
Shell 数学计算:轻松掌握算术运算基本功
在Shell脚本中进行数学计算需借助特定方法。`(())`用于高效整数运算,如`((1+1))`,而`bc`处理小数,如`echo &quot;3.14 + 2.86&quot; | bc`。`let`与`(())`相似,`expr`较繁琐,`declare -i`仅限基础整数运算。使用`bc`时,`scale`定义小数精度。通过这些工具,Shell脚本也能实现复杂的数学计算。
86 0
|
6月前
|
Shell 程序员 Linux
【Shell 编程指南】shell运算操作符之(())
【Shell 编程指南】shell运算操作符之(())
47 0
|
6月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
61 0
|
6月前
|
Shell Linux C语言
【Shell 命令集合 文档编辑】Linux 种算术运算 expr命令使用指南
【Shell 命令集合 文档编辑】Linux 种算术运算 expr命令使用指南
86 0
|
运维 Shell Python
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(一)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)
132 0
|
6月前
|
Shell Windows Perl
Shell编程自动化之数学运算与条件测试
本文主要介绍了Shell编程自动化之数学运算与条件测试,并结合实例测试。
48 0
|
6月前
|
Kubernetes Shell Linux
linux|shell编程|shell脚本内的加减乘除运算实现和π值的计算示例
linux|shell编程|shell脚本内的加减乘除运算实现和π值的计算示例
414 0
|
运维 Shell Perl
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
131 0
|
Shell
SHELL运算操作符与运算命令、原码、补码、反码
原码:最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。 反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。 补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变
113 0