Linux脚本中带有小数点的数值比较大小

简介: shell的 test 对于数值的判断都是基于整数的,没办法对带有小数的数值直接进行对比。而且小数位数不一样,也会有问题。
1
2
3
4
5
6
7
8
9
10
11
a=1.2
b=1.1
 
如果直接用
if [ $a -gt $b ];then
echo "$a > $b"
fi
或者
if [ $a > $b ];then
echo "$a > $b"
fi

都会提示语法错误
[: 1.2: integer expression expected
没办法直接对带有小数点的数进行对比

 

shell的 test 对于数值的判断都是基于整数的,没办法对带有小数的数值直接进行对比。

我们可以通过其它变通的方法来进行对比:

1、[[   ]]

1
[[ $a > $b ]] &&  echo "$a > $b"

2、expr方法

比较妙的方法 expr $a \> $b
根据上面返回值来进行判断,等于0表示$a < $b,或者$a > $b

1
2
3
4
5
6
7
a=1.2
b=1.1
if [ `expr $a \> $b ` -eq 0 ];then
echo "$a < $b"
else
echo "$a > $b"
fi

注意:上面两种方法如果位数不一致,就没办法正常对比。

 

3、bc计算(推荐使用)

1
2
3
4
5
6
7
8
a=1.0
b=1.1
 
if [ $( echo "$a > $b" |bc) -eq 0 ];then
echo "$a < $b"
else
echo "$a > $b"
fi

大于返回1,小于返回0

 

位数不一样的有小数的数字,判断是否相等:

1
2
3
4
5
6
7
8
a=1.0
b=1.0000
 
if [ $( echo "$a == $b" |bc) -eq 0 ];then
echo "$a != $b"
else
echo "$a = $b"
fi

还是这种方法比较好,推荐使用

 

4、awk

1
awk -v num1=6.6 -v num2=5.5 'BEGIN{print(num1>num2)?"0":"1"}'

如果num1>num2打印输出0,否则输出1

相关文章
|
18天前
|
Ubuntu Linux
Linux(21) Linux自定义开机启动脚本或命令
Linux(21) Linux自定义开机启动脚本或命令
33 3
|
1月前
|
Linux Shell
嵌入式Linux系统脚本小技巧之启动脚本
嵌入式Linux系统脚本小技巧之启动脚本
19 2
|
1月前
|
运维 Java Shell
Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包
Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包
32 0
|
1月前
|
Shell Linux
Linux使用Shell脚本SCP批量传输脚本
Linux使用Shell脚本SCP批量传输脚本
32 0
|
1月前
|
关系型数据库 MySQL Linux
Linux系统使用定时脚本备份mysql
Linux系统使用定时脚本备份mysql
|
11天前
|
存储 Shell Linux
Linux Bash 脚本中的 IFS 是什么?
【4月更文挑战第25天】
18 0
Linux Bash 脚本中的 IFS 是什么?
|
4天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
21 5
|
5天前
|
分布式计算 大数据 Hadoop
【经验分享】用Linux脚本管理虚拟机下的大数据服务
【经验分享】用Linux脚本管理虚拟机下的大数据服务
15 1
|
5天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
13 3
|
17天前
|
监控 网络协议 数据可视化
Shell脚本查看linux系统性能瓶颈
Shell脚本查看linux系统性能瓶颈