当前位置:  操作系统/服务器>linux

比较两个字符串是否相等的shell代码

    来源: 互联网  发布时间:2014-10-13

    本文导语:  比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 2 注意到等号两边各有一个空格:这是unix shell的要求 3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的...

比较两个字符串是否相等的办法是:
if [ "$test"x = "test"x ]; then

这里的关键有几点:
1 使用单个等号
2 注意到等号两边各有一个空格:这是unix shell的要求
3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.
整数比较
-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" ]
大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
小数据比较可使用AWK
字符串比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!= 不等于,如:if [ "$a" != "$b" ]
这个操作符将在[[]]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" > "$b" ]
注意:在[]结构中">"需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"

注意:
使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.

    
 
 

您可能感兴趣的文章:

  • JAVA可以真正实现实数的相等比较吗?
  • java 的float里0.04+0.01=0.4999997!=0.5我怎么比较相等阿!
  • JSP中用于比较相等的equals方法,请指教!
  • 看看会输出什么?结果是equal b,==在string里不是比较两个串是不是相等嘛?
  • sockaddr和sockaddr_in如何进行比较相等
  • 我是想检查读出的字节和下一字节是不是相等,但从现在的输出来看,它输出的每一个字节都是显示 [B@77d134 ,如何进行字节的比较,用这种
  • 怎样比较String中的部份是否相等?
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • "400分给有比较好的字符串比较的算法的朋友"要结帖,想做笔迹保留的不可漏看哦
  • C++ Strings(字符串) 成员 compare():比较两个字符串
  • 如何使GDB显示完整的字符串变量,当字符串比较长时。
  • linux c/c++ IP字符串转换成可比较大小的数字
  • shell中如何比较 路径 字符串?
  • Linux下如何比较两个字符串啊
  • 有一个字符串,类似20020801怎么和但前的年月日比较呢?
  • vbs:一段比较精简的代码实现取得字符串的"字节"数
  • 字符串的比较
  • 请教关于linux Shell字符串比较 结果与预期不一样??
  • shell 字符串比较
  • shell中,有两个字符串:"2004.05.23" 和"2005.03.01"。 怎么来比较他们的大小?
  • java字符串比较获取字符串出现次数的示例
  • C#.NET字符串比较中忽略符号的方法
  • test比较字符串,为什么结果相反?
  • php字符串比较函数实例
  • 关于字符串和结果集合里面的字段比较的问题,我都快发疯了!
  • 请问一下。如何比较两个字符串是否相同,如果a="123",b="123 "那么他们两个等不等呀?
  • PHP中比较两个字符串找出第一个不同字符位置例子
  • sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 英文字符和中文字符的长度如何比较?
  • 字符和时间我如何比较
  • Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?
  • 请教JAVA字符比较问题谢谢
  • shell字符串比较判断是否为数字
  • java求数组元素重复次数和java字符串比较大小示例
  • php 字符串压缩方法比较示例
  • php字符串比较与查找方法详解
  • 求教,结构体中字符串的比较
  • 字符串拷贝函数memcpy和strncpy以及snprintf 的性能比较
  • php日期字符串比较实例
  • mysql 字符串函数收集比较全
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 你们看是不是可以这样理解:在用来进行两个对象的比较时,==操作符用来比较两个对象的引用地址,而equals()用来比较两个对象的值。
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 问一下,现在比较新比较好的MYSQL版本和JDBC版本
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • SOCKET 比较是在比较什么 急
  • php iis7站长之家
  • 问一个比较简单的问题 frame 的 setSize()放在那里比较合适
  • C++ Double Ended Queues(双向队列) 成员 Operators:比较和赋值双向队列
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 用java读一个比较大的文本文件(几百k~几M)怎么才能比较快?
  • C++ Bitsets 成员 Operators:比较和赋值bitsets
  • arm-linux-gcc 在哪下载比较好,历史版本比较齐?
  • STL vector+sort排序和multiset/multimap排序比较
  • 问一个比较简单的问题 请不要见笑 frame 的 setVisible()放在那里比较合适?
  • 文档数据库mongodb与列式数据库hbase详细比较
  • 在JSP中用session比较好?还是cookie比较好?因为什么?
  • mongodb和redis哪个好?mongodb和redis比较


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3