比较两个字符串是否相等的办法是:
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. C语言字符数组显示钻石,c++两种字符串赋值方式 并介绍 C语言下遍历目录文件的方式...

    c++字符串声明:一种是声明字符数组并赋值,另一种是直接声明string类 #define _CRT_SECURE_NO_WARNINGS #include #include #include &qu ...

  2. shell 获取字符串前两个字符串、获取字符串最后一个字符、去掉字符串最后一个字符、去掉末尾一个字符、去掉末尾两个字符

    1. 获取字符串前两个字符串 temp=`echo $RANDOM|md5sum|sed 's/../&:/g'|cut -c 1-17` echo $temp echo ${temp:0:2 ...

  3. linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  4. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  5. shell 中匹配正则 字符串处理【整理版】

    很实用,建议收藏 网站上线了:http://javapub.net.cn/ shell 里一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找 ...

  6. shell 中匹配正则 字符串处理

    很实用,建议收藏 shell里一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板, ...

  7. shell编程范例之字符串操作[转]

    shell编程范例之字符串操作 下面是"在线新华字典"的解释: 字符串: 简称"串".有限字符的序列.数据元素为字符的线性表,是一种数据的逻辑结构.在计算机中可 ...

  8. shell脚本两个文件关键行合并

    shell scripts两个文件关键行合并 1.写作意图 2.shell按行读取文件信息 3.提取每行第3列的信息 4.在另一个文件B中查找关键字key 5.字符串非空判断输出 6.关键字key所在 ...

  9. shell jq处理json字符串

    shell jq处理json字符串 1.1 工具介绍 自己用shell处理json字符串的时候,开发输入格式的不通会导致解析字符串有问题,所以这里用到了jq工具 jq 是一款命令行下处理 JSON 数 ...

最新文章

  1. android 自定义span_Android – 为ClickSpan设置自定义可绘制背景
  2. 归并排序及C语言实现
  3. python必学_Python必学框架
  4. java源码导入eclipse_spring5源码如何导入eclipse
  5. java 多线程同步问题_Java多线程同步问题:一个小Demo完全搞懂
  6. 阿里云混合云管理平台发布帮您管好云
  7. collections模块之defaultdict
  8. leetcode:Single Number【Python版】
  9. Spring+MyBatis企业应用实战 - 笔记- Java EE应用
  10. Java定时任务工具详解之Timer篇
  11. moodle php代码解读_Moodle插件开发笔记
  12. 噪声调相干扰matlab程序,噪声调相干扰信号的性能仿真
  13. 08cms中error_08cms_licens 故障
  14. 收藏--hibernate——继承关系以及三个subclass标签的区别
  15. Ubuntu常用命令
  16. AndroidStudio:The application‘s minSdkVersion is newer than the device API level.
  17. excel将一个工作表根据条件拆分成多个工作表,并将多个工作表怎么拆分成独立表格
  18. python学习-进阶
  19. 一个26岁没文凭,想去努力自学编程,有机会成为程序员吗?
  20. python二级成绩查询入口官网_python爬虫实战之模拟正方教务系统登录查询成绩

热门文章

  1. js中的墙头草---this
  2. Android Intent And Intent Filter
  3. Symfony2插件StofDoctrineExtensionsBundle的使用说明
  4. Drupal Working with nodes, content types and fields
  5. JQ插件的写法及使用整理
  6. Android Notification实现推送消息过程中接受到消息端有声音及震动及亮屏提示
  7. SpringBoot2.0实现静态资源版本控制
  8. day36 python学习gevent io 多路复用 socketserver *****
  9. jQuery获取URL的GET参数值
  10. [转] 移动前端不得不了解的HTML5 head 头标签