运维中经常编写脚本时,如果遇到使用变量间歇取值并和整数进行比较时,大多数人第一时间会想到使用"-eq"进行比较,但事实中如果因特殊原因导致变量取值为空(null)时,bash shell会把null转换为0进行"-eq"比较,如果遇到此种困惑,可以把整数比较方法改为使用字符串比较(==),这样就可以很好的解决整数比较带来的这种bug。
为什么会有此文章,正是因为笔者在线上使用脚本运维的过程中,因此bug出现过两次失手,也给公司带来了带来了一些损失,经过仔细分析程序日志和脚本运行逻辑,加上如下测试过程,才真正找到了bug的所在以及解决办法。以下是笔者推敲思路,供大家分析之用。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2018-01-21 00:54:23
                            
                                10000+阅读
                            
                                                        
                                点赞
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1. 数据计算基础使用man 或者info查看shell bash的判断命令test,Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。man test info test可以使用type查看一个命令是否是shell内置的函数,例如$ type typetype is a             
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2018-11-10 08:33:04
                            
                                1213阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ]-gt 大于,如:if [ "$a" -gt "$b" ]-ge 大于等于,如:if [ "$a" -ge "$b" ]-lt 小于,如:if [ "$a" -lt "$b" ]-le 小于等于,如:if [ "$a" -le "$b" ] < 小于(需要双括号),如            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2012-07-23 12:31:00
                            
                                92阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1、算术比较运算符描述-eq等于-ne不等于-gt大于-lt小于-ge大于等于-le小于等于举例:[ $var -eq 1 ] #变量等于1 返回真[ $var -ne 1 ] #变量不等于1 返回真[ $var -gt 1 ] #变量大于1 返回真[ $var -lt 1 ] #变量小于1 返回真[ $var -ge 1 ] #变量大于等于1 返回真[ $var -le 1 ] #变量小于等于1            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2016-01-02 16:17:38
                            
                                1440阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ]-gt 大于,如:if [ "$a" -gt "$b" ]-ge 大于等于,如:if [ "$a" -ge "$b" ]-lt 小于,如:if [ "$a" -lt "$b" ]-le 小于等于,如:if [ "$a" -le "$b" ]< 小于(需要双括号),如:            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2014-03-11 10:09:10
                            
                                338阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            测试数值 1.测试数值参数详解 # [[]]与[]基本一样,不同的是[[]]支持正则匹配,不过要注意的是必须在内层中括号内左右两侧加空格 -eq # 等于 -ne # 不等于 -gt # 大于 -lt # 小于 -ge # 大于等于 le # 小于等于 -a # 并且 -o # 或者 # 注意事项:            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-29 09:46:14
                            
                                2243阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在Linux操作系统中,Shell脚本是一种常见的脚本编程语言,用于自动化执行一系列命令。其中,数值比较是Shell脚本中常见的操作之一。在Shell脚本中,我们经常需要对数字进行比较,以便根据不同的条件执行不同的操作。
在Shell脚本中,使用“[”和“]”符号来表示数值比较操作。以下是一些常见的数值比较操作符:
- `-eq`:等于
- `-ne`:不等于
- `-gt`:大于
- `-l            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-05-30 11:01:35
                            
                                198阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Shell中字符串、数值的比较二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2014-06-17 01:00:00
                            
                                776阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            -eq:等于-ne:不等于-gt:大于-lt:小于-le:小于或等于-ge:大于或等于cat file.txt | awk '$2 >="09:03:00"'awk 如何取反cat file.txt | awk '$3 >="09:03"'| awk '{$2="";print}'            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2015-12-08 00:01:21
                            
                                1797阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            写个调度器需要对小数之间进行大小比较,经查询shell中 可以用 bc 对小数进行运算
example:
#echo 5.5+1.1 | bc
6.6
具体情况#man bc
然而对小数进行比较的相关方法有几个:
1. 自己的解决方法,判断小数点后最多有几位数(N),然后对将要比较的两个数值进行 乘与10的N次方
也就是将小数点去掉来进行比较(小数点后位数多的直接去掉小数点,少的用0            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2010-09-07 13:41:21
                            
                                1462阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Bash常用的三种比较方式:1、数值比较2、字符串比较3、文件比较数值比较:    -eq:等于    -ge:大于或等于    -gt:大于    -le:小于或等于    -lt:小于             
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2015-01-23 17:51:22
                            
                                1154阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            if [ "$PARAM" -ge 1 ] &&[ "$PARAM" -le 3 ] ;thenfi条件测试的表达式:[ expression ]` expression `整数比较: -eq:测试两个整数是否相等;比如 $A -eq $B -ne:测试两个整数是否不等;不等,为真;...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-03-09 10:40:00
                            
                                1620阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            if [ "$PARAM" -ge 1 ] &&[ "$PARAM" -le 3 ] ;thenfi条件测试的表达式:[ expression ]` expression `整数比较: -eq:测试两个整数是否相等;比如 $A -eq $B -ne:测试两个整数是否不等;不等,为真;...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-09-11 09:52:10
                            
                                3856阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            最简单的例子 —— Hello World!几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH。用 vi 编辑器编辑一个 hello 文件如下:#!/bin/bash# This is a very simple exampleecho Hello World这样最简单的一个 BASH 程序就编写完了。这里有            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2008-07-29 10:44:19
                            
                                4672阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            shell,大家对这个词应该都不陌生,只要有操作系统应该就离不开shell。我们要通过shell将输入的命令与核心沟通,让核心可以控制硬件来正确的工作。在linux当中可以使用的shell至少有一下几种:
l  /bin/ksh (兼容于bash);
l  /bin/zsh(基于ksh开发,功能更强大的shell)。
 
 既然/bin/bash是l            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2010-07-14 18:52:37
                            
                                559阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            其实学习linux系统主要就是学的bash shell,可见它的强大之处,学好会给我们系统管理带来很大的方便,以下都是参考各种资料后自己整理的,方便日后查找。
Bash shell 的功能:
1.命令历史(history) :记录使用过的指令。默认记录1000个指令。保存在~/.bash_history里(只有用户退出
 
系统后),至于当前执行的被记忆在内存中。
2.命令            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2012-12-28 14:24:09
                            
                                528阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            shell外壳GUI:Gnome、KDE、xfceCLI:sh、csh、ksh、bash进程:在每个进程看来,当前主机只存在内核和当前进程进程是程序的副本,进程是程序执行实例bash1、命令历史,命令补全2、管道、重定向3、命令别名4、命令行编辑5、命令行展开6、文件名通配7、变量8、编程命令行编辑:光标跳转Ctrl+a:跳转到命令行首Ctrl+e:跳转到命令行尾Ctrl+u:删除光标至命令行首的            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2018-12-11 17:30:51
                            
                                369阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            bash shell
terminal tools
asciinema-player
http verbs
symbol link            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2018-07-03 11:26:00
                            
                                161阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Shell是用户和操作系统之间完成交互式操作的一个接口程。   bash是Linux操作系统的默认shell程序。   我们可以使用cat /etc/shells   查看当前系统中所有可以支持的安全shell。   也可以直接输入shell命令的名字,切换shell[root@localhost ~]# s            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2017-10-27 21:39:41
                            
                                686阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            编程基础程序:指令+数据程序编程风格:过程式:以指令为中心,数据服务于指令对象式:以数据为中心,指令服务于数据shell程序:提供了编程能力,解释执行程序的执行方式计算机:运行二进制指令编程语言:低级:汇编高级:编译:高级语言-->编译器-->目标代码java,C#解释:高级语言-->解释器-->机器代码shell,perl,python编程逻辑处理方式:顺序执行循环执行选            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2018-04-15 22:26:40
                            
                                650阅读
                            
                                                        
                                点赞