当前位置: 首页 > news >正文

shell编程——运算符和运算命令

1、运算符

1.1、运算符列表

符号含义
+实现加法运算
-实现减法运算
*实现乘法运算
/实现除法运算
%实现取余运算
^或者**实现幂次运算
&&实现逻辑与运算,前一个命令执行失败就不再执行后面一个
||实现逻辑或运算,前一个命令执行成功就不再执行后面一个
  • 上面的命令,除了&&和||之外不能直接使用,需要结合运算命令一起使用

1.2、示例代码

rlk@rlk:shell$ cat ./test.sh 
#!/bin/bash

let para=8+3
echo ${para}

let para=8-3
echo ${para}

let para=8*3
echo ${para}

let para=8/3
echo ${para}

let para=8%3
echo ${para}

let para=8**3
echo ${para}

#如果/temp/11不存在就创建
ls /home/rlk/11 || mkdir -p /home/rlk/11

#如果/temp/11存在就进入该目录
ls /home/rlk/11 || mkdir -p /home/rlk/11
rlk@rlk:shell$ 
rlk@rlk:shell$ 
rlk@rlk:shell$ 
rlk@rlk:shell$ ./test.sh 
11
5
24
2
2
512

2、运算命令

2.1、运算命令列表

运算命令用法
awk可以进行浮点运算
let只能进行整数运算
bc可以进行浮点数运算
expr只能进行整数运算,一般用于判断传参是否是数字
$(())进行整数运算
$[]进行整数运算

2.2、示例代码

#!/bin/bash

echo "*******************awk*************************"
num1=111
num2=33

#使用-v给awk命令传参数,参数来自shell脚本里的变量
awk -v para1=$num1 -v para2=$num2 'BEGIN{print 8/3, 2^9, para1+para2}'

echo "*******************bc*************************"

#bc默认只支持整数,-l选项是支持数学库,支持浮点数运算,scale是指定小数点位数
#bc默认是交互方式,这里使用管道来传递
echo "2+3" | bc
echo "scale=2;8/3" | bc -l
echo "scale=2;${num1} / ${num2}" | bc -l

echo "*******************expr*************************"
#expr命令后面跟表达式,数字和运算符号用空格隔开
#expr后面的变量都是数字,则返回0,但是计算结果是0则返回1,如果变量有不是数字的返回2
expr 22 + 33
echo $?

num1=0
num2=0

expr ${num1} + ${num2}
echo $?

expr 22 + a
echo $?

# 使用expr判断参数是否都是数字,这里默认加一是防止运算结果为零导致返回值是1
expr ${num1} + ${num2} + 1
echo $?

echo "*******************let*************************"
num1=111
num2=33

i=3
let i++
echo $i
let i=${num1}+${num2}
echo $i
let i+=12
echo $i

echo "*******************\$(())*************************"
#进行整数运算,变量可以不加$符号
echo $((num1*num2))

echo "*******************\$[]*************************"
#进行整数运算,变量可以不加$符号
echo $[num1*num2]

2.3、运行结果

rlk@rlk:shell$ ./test.sh 
*******************awk*************************
2.66667 512 144
*******************bc*************************
5
2.66
3.36
*******************expr*************************
55
0
0
1
expr: non-integer argument
2
1
0
*******************let*************************
4
144
156
*******************0*************************
3663
*******************0*************************
3663
rlk@rlk:shell$ ./test.sh 
*******************awk*************************
2.66667 512 144
*******************bc*************************
5
2.66
3.36
*******************expr*************************
55
0
0
1
expr: non-integer argument
2
1
0
*******************let*************************
4
144
156
*******************$(())*************************
3663
*******************$[]*************************
3663

相关文章:

  • 硬件基础(4):(1)AD采集电路设计
  • <论文>MiniCPM:利用可扩展训练策略揭示小型语言模型的潜力
  • Tomcat 使用与调优全解析
  • [Linux]进程
  • 财务会计域——合并报表系统设计
  • 7.2 奇异值分解的基与矩阵
  • 线程通信---java
  • 【Python字符串】\n是什么?它与raw字符串、多行字符串的运用有什么关系?
  • FPGA|Verilog-SPI驱动
  • C++中的构造函数
  • 在 Ubuntu 下通过 Docker 部署 Mastodon 服务器
  • click house扩容方案
  • (四)Linux Miniconda 安装+换源+新建环境+迁移环境
  • C++指针的基本认识
  • Upload-Labs-Linux 1-20
  • Python脚本,音频格式转换 和 视频格式转换
  • 达梦数据库导入数据,通过命令的方式
  • 【Godot4.4】浅尝Godot中的MVC
  • 蓝桥杯—走迷宫(BFS算法)
  • QT | 信号与槽(超详解)
  • 现在装宽带要多少钱/搜索引擎优化的英文缩写是什么
  • 深圳网站建设首选/东莞seo项目优化方法