热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell中整数的比较

为了测试在shell编程中,对整数类型的比较,特意写了如下的测试代码:#!binsh#shell中对变量的值添加单引号,爽引号和不添加的区别,对类型来说是无关的,主要是单引号不#对相关量进行替换,

为了测试在shell编程中,对整数类型的比较,特意写了如下的测试代码:

 

在控制台下执行操作:

一,相等的整数情况

./test_compareop.sh 123 123

输出:

输入的原始值:A=123,B=123
shell风格:
eq
ge
le
c风格的比较
==
>=
<=

 

二,大于的整数的情况

./test_compareop.sh 123 12

输出:

输入的原始值:A=123,B=12
shell风格:
ge
ne
gt
c风格的比较
>=
!=
>

 

三,小于的整数的情况

./test_compareop.sh 123 124

输出:

输入的原始值:A=123,B=124
shell风格:
le
ne
lt
c风格的比较
<=
!=
<

 

四,含有字符的形式

./test_compareop.sh 123 abc

输出:

输入的原始值:A=123,B=abc
shell风格:
./test_compareop.sh: line 16: [: abc: integer expression expected
./test_compareop.sh: line 20: [: abc: integer expression expected
./test_compareop.sh: line 24: [: abc: integer expression expected
./test_compareop.sh: line 29: [: abc: integer expression expected
./test_compareop.sh: line 33: [: abc: integer expression expected
./test_compareop.sh: line 37: [: abc: integer expression expected
c风格的比较
>=
!=
>

 

可见:c风格的形式支持字符串的比较

 

五,浮点数的形式

./test_compareop.sh 123.34 233.5

输出:

输入的原始值:A=123.34,B=233.5
shell风格:
./test_compareop.sh: line 16: [: 123.34: integer expression expected
./test_compareop.sh: line 20: [: 123.34: integer expression expected
./test_compareop.sh: line 24: [: 123.34: integer expression expected
./test_compareop.sh: line 29: [: 123.34: integer expression expected
./test_compareop.sh: line 33: [: 123.34: integer expression expected
./test_compareop.sh: line 37: [: 123.34: integer expression expected
c风格的比较
./test_compareop.sh: line 43: ((: 123.34 == 233.5: syntax error in expression (error token is ".34 == 233.5")
./test_compareop.sh: line 47: ((: 123.34 >= 233.5: syntax error in expression (error token is ".34 >= 233.5")
./test_compareop.sh: line 51: ((: 123.34 <= 233.5: syntax error in expression (error token is ".34 <= 233.5")
./test_compareop.sh: line 55: ((: 123.34 != 233.5: syntax error in expression (error token is ".34 != 233.5")
./test_compareop.sh: line 59: ((: 123.34 > 233.5: syntax error in expression (error token is ".34 > 233.5")
./test_compareop.sh: line 63: ((: 123.34 <233.5: syntax error in expression (error token is ".34 <233.5")

可见,两者均出现错误

 

小结

1,[ $A -op $B ]形式的比较只能支持整数类型的比较,其中-op=[-eq|-lt|-gt|-ne|-ge|-le],其中中括号的两边必须保留一个空格

2,c风格的比较支持整数和字符串的形式比较,但不支持浮点数的比较

3,shell中对单引号,双引号和不加引号的变量的值不影响类型,但影响对应的转义,如对双引号里面的$会认为是变量,shell自动进行替换成变量的值,而单引号的则不会

4,需要充分注意的是:在比较符号的两边必须都有空格,如[ $a == $b ] 而不能[ $a==$b ]

   如:if  [  "aabdc"="abc" ] 中,没有空格,不合比较的语法,而被 shell认为是简单的字符串,在shell的条件中字符被为是真值

   必须改成[ "aabdc" = "abc" ] 


推荐阅读
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
  • Java中List的forEach方法与字符串拼接的兼容性问题
    本文深入探讨了在Java中使用List的forEach方法时遇到的字符串拼接问题,提供了有效的解决方案及背后的原理分析,旨在帮助开发者更好地理解和解决此类问题。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • VSCode 切换 Python 虚拟环境时遇到脚本执行权限问题
    本文介绍了解决在 VSCode 中切换 Python 虚拟环境时出现的‘无法加载文件 E:Python_projectshop_envScriptsActivate.ps1,因为在此系统上禁止运行脚本’的问题的方法。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • 在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ... [详细]
  • Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
author-avatar
红殿_真红王道哥哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有