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

转载 2011年11月24日 11:09:57

http://linux.chinaunix.net/techdoc/develop/2008/12/31/1055895.shtml

比较两个字符串是否相等的办法是: 
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 
       或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可 
       以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/39643/showart_1763834.html  发表评论 查看评论(共有条评论) 

shell中如何判断两个字符串相等

注意的几点: 1、if和[ ]之间要空格。 2、[ ]和“ ”之间要空格 3、“ ”和=之间要空格, 否则都会报错...
  • xiaaiwu
  • xiaaiwu
  • 2015-10-16 10:22:35
  • 11830

脚本乐园 Shell字符串比较相等、不相等方法小结

#!/bin/sh    #测试各种字符串比较操作。 #shell中对变量的值添加单引号,爽引号和不添加的区别:对类型来说是无关的,即不是添加了引号就变成了字符串类型, #单引号不对相关量进行替换,如...
  • skdkjxy
  • skdkjxy
  • 2015-01-04 08:42:05
  • 4094

比较输入的两个字符串是否相等(c++ 11)

在c++ 11 中可以通过auto来推断string对象长度的实际类型。 size函数返回string对象的长度(即string对象中字符的个数),这样看来size函数的函数类型是unsigned类...
  • u014571231
  • u014571231
  • 2016-03-04 11:15:00
  • 3644

[Shell] if、for、while流程语句以及整数字符串判断比较的实例详解

前言: 实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具...
  • mchdba
  • mchdba
  • 2014-09-08 20:32:05
  • 4094

qt 比较两个字符串是否相等

QString str = QString::fromLocal8Bit("球形"); if(str.compare(QString::fromLocal8Bit("球形") == 0) { } ...
  • qq_40110291
  • qq_40110291
  • 2017-09-29 15:02:33
  • 266

【shell】比较两个文件是否相同

shell 比较文件
  • u010783148
  • u010783148
  • 2017-06-24 13:49:08
  • 941

如何快速比较这两个字符串是否相等?

如何快速比较这两个字符串是否相等?两个字符串相等的条件如下,字符串中的每个字母出现的次数都相等。例如:abbcd和acdbb是相等的,因为a都出现1次,b都出现2次,c都出现3次,d都出现4次。请先给...
  • huaweitman
  • huaweitman
  • 2013-07-26 19:43:10
  • 7752

JAVA如何判断两个字符串是否相等

JAVA如何判断两个字符串是否相等 时间:2015-04-15 13:08:06      阅读:6627      评论:0      收藏:0      [点我收藏+] 标...
  • evilcry2012
  • evilcry2012
  • 2016-05-23 11:48:15
  • 7778

汇编语言 微机原理 判断两个字符串是否相等

  • 2009年10月15日 16:45
  • 2KB
  • 下载

比较两个字符串是否相等(用指针完成)

  • 2014年06月15日 21:52
  • 490B
  • 下载
收藏助手
不良信息举报
您举报文章:shell比较两个字符串是否相等
举报原因:
原因补充:

(最多只允许输入30个字)