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

shell比较两个字符串是否相等的更多相关文章

  1. 转:shell比较两个字符串是否相等

    比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then这里的关键有几点:1 使用单个等号2 注意到等号两边各有一个空格 ...

  2. 【shell】两种字符串提取场景的实现

    shell虽然比batch顺眼点儿,但还是老话,入门容易,精通难. 1.场景一是这样的,现有字符串的内容 name: tiger; age:18; location:china; 需求:提取每个属性的 ...

  3. python中执行shell的两种方法总结

    这篇文章主要介绍了python中执行shell的两种方法,有两种方法可以在Python中执行SHELL程序,方法一是使用Python的commands包,方法二则是使用subprocess包,这两个包 ...

  4. Shell基本运算符之字符串运算符

    Shell基本运算符 1.字符串运算符 常用的字符串运算符 运算符 说明 例子 = 检测两字符串是否相等,相等返回true [ $a = $b ] != 检测两个字符串是否部相等,不相等返回true ...

  5. js正则表达式的一些研究,截取两个字符串中间的字符串

    一个最常用的场景 截取两个字符串中间的字符串 var str = "iid0000ffr";    var substr = str.match(/id(\S*)ff/);    ...

  6. C#动态规划查找两个字符串最大子串

     //动态规划查找两个字符串最大子串         public static string lcs(string word1, string word2)         {            ...

  7. Python 比较两个字符串大小

    python 2中,有cmp(a,b)函数,用于比较两个字符串的大小. 如 >>>a='abc' >>>b='abd' >>>print cmp( ...

  8. 用Java编程找到两个字符串中共有的字符

    这道题的算法思想是把字符串1中的每个字符与字符串2中的每个字符进行比较,遇到共同拥有的字符,放入另一个数组中,最后顺序输出即可 但是这道题的难点在于怎么排除重复的字符 public class bot ...

  9. C# 计算两个字符串的相似度

    我们在做数据系统的时候,经常会用到模糊搜索,但是,数据库提供的模糊搜索并不具备按照相关度进行排序的功能. 现在提供一个比较两个字符串相似度的方法. 通过计算出两个字符串的相似度,就可以通过Linq在内 ...

随机推荐

  1. ABP源码分析二十一:Feature

    Feature是什么?Feature就是对function的分类方法,其与function的关系就比如Role和User的关系一样. ABP中Feature具有以下属性: 其中最重要的属性是name, ...

  2. C# OracleDBhelper

    引用 using System.Configuration;using System.Data.OracleClient; 连接字符串 <connectionStrings> <ad ...

  3. xib文件的加载方法

    xib文件的加载方法 以UITableViewCell的cell为例 很多时候因为系统的cell无法满足我们的日常需求,我们都会自定义cell 因为cell的界面比较固定,所以通常都会选择用xib来描 ...

  4. Android自定义控件之自定义组合控件

    前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...

  5. 浅析JavaScript事件流——冒泡

    一.什么是事件冒泡流 我们知道事件流指的是从页面中接受事件的顺序. 为了形象理解事件冒泡,可以想象三军主将诸葛亮,在帐内运筹帷幄,眼观六路耳听八方,这时候前方的战事情况就需要靠传令兵来传达,当第一位传 ...

  6. Python(四)装饰器、迭代器&生成器、re正则表达式、字符串格式化

    本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解 ...

  7. Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决

    最近一直在开发XX的uwp版本,也是边摸索边做,最近遇到几个比较奇怪的问题,记录于此. 1.项目可用部署到PC,但无法部署到手机,提示以下错误: 错误 : DEP0001 : 意外错误: Instal ...

  8. 如何在虚拟机里安装Linux

    本篇仅为作业... 实验课程:Linux 实验机器:联想y410p 指导老师:刘臣奇 实验时间:2016年9月25日 学生学号:140815 姓名:杨文乾 一.先安装虚拟机,之后创建一个新的虚拟机 之 ...

  9. C#遐想/瞎想

    泛型约束更强大.比如支持有参构造函数.枚举.委托: void Foo<T>() where T : new(string, int), enum, delegate 空值判断符允许对属性/ ...

  10. C# - 多线程 之 信号系统

    基础概览 多线程之信号系统命名空间 using System.Threading; 线程同步类的继承层次关系图 终止状态和非终止状态 在终止状态下,被WaitOne()阻塞的线程会逐个得到释放.如果一 ...