1、字符串比较(字符串运算符):

str1 = str2 : 相等比较

str1 != str2 : 不等比较

str1 < str2 : str1小于str2为true,比较字母在字母表顺序,字母越靠后就越大,反之越小

str1 > str2 : str1大于str2为true,比较字母在字母表顺序,字母越靠后就越大,反之越小

-n str1 : str1长度不是0则为true

-z str1 : str1长度为0则为true,-z 是Zero简写

(1) 使用两个字符串直接进行比较

#!/bin/bashvar1="hello"
var2="world"
if [ $var1 = $var2 ];thenecho "$var1 < $var2"
# 在shell中>或<是输入或输出重定向符号,需要加反斜杠作转义
elif [ $var1 \< $var2 ];thenecho "$var1 < $var2"
elseecho "$var1 > $var2"
fi
# 运行结果
~ % sh 06.condition_str_than.sh
hello < world

注:字符串比较大小,首先会将首个字符转化成ASCII码进行比较大小,如果相同会继续比较第二个字符以此类推,但是需要注意如果是数字类型的字符串如"12",进行比较会出问题,比较数字大小还是使用-gt、-lt等,大小号慎用。

(2) 对字符串作空值比较

#!/bin/bashstr1="love"
str2="    "
# str3未进行定义
str3=
if [ -n $str1 ];thenecho "$str1 is not null"
elseecho "$str1 is null"
fi
if [ -n $str2 ];thenecho "$str2 is not null"
elseecho "$str2 is null"
fi
if [ -n "$str3" ];thenecho "$str3 is not null"
elseecho "$str3 is null"
fi# 输出结果:
~ % sh 06.condition_str_than.sh
love is not nullis not nullis null

(3)Shell中判断条件使用字符串变量时遇到坑

#!/bin/bashif [ -n $str ];thenecho "$str is not null"
elseecho "$str is null"
fi
echo "-----------------------"
if [ -n "$str" ];thenecho "$str is not null"
elseecho "$str is null"
fi# 运行结果# 使用-x参数进行调试,显示整个执行过程,查看脚本实际执行命令% sh -x 06.condition_str_than.sh
+ '[' -n ']'
+ echo ' is not null'is not null
+ echo ----------------------------------------------
+ '[' -n '' ']'
+ echo ' is null'is null

条件判断中使用字符串变量不加双引号作为条件,在未定义使用字符串变量时,会默认为空条件就变成“[ -n ]”,-n 就作为字符串处理,最后就变成True,所以运行脚本就会输出" is not null"。

所以在条件判断中使用字符串变量时,都加上双引号以避免不比较麻烦。

# 直接在终端运行,验证[ -n ]作为条件时输出
~ % if [ -n ];then echo yes;else no;fi
yes

Shell条件测试之字符串比较相关推荐

  1. linux中shell条件判断if中的-a到-z的意思

    2019独角兽企业重金招聘Python工程师标准>>> 下面我们一起来看一篇关于shell条件判断if中的-a到-z的意思,有需要了解的朋友不防进入参考参考. [ -a FILE ] ...

  2. shell中(字符串截取)

    cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢? cut命令主要是接 ...

  3. 用shell将时间字符串与时间戳互转

    http://www.codelast.com/?p=775 在shell中,字符串转换为时间戳可以这样做: 1 date -d "2010-10-18 00:00:00" +%s ...

  4. Shell脚本中字符串的一些常用操作

    Shell脚本中字符串的一些常用操作 字符串长度 ${#string}可以获得${string}的长度 例子: string='How are you' echo ${#string} # 输出结果为 ...

  5. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  6. 《Python Cookbook 3rd》笔记(2.3):用Shell通配符匹配字符串

    用 Shell 通配符匹配字符串 问题 你想使用 Unix Shell 中常用的通配符 (比如 *.py , Dat[0-9]*.csv 等) 去匹配文本字符串 解法 fnmatch 模块提供了两个函 ...

  7. shell条件判断 if else

    基本语法 shell的if语法和C语言等高级语言非常相似,唯一需要注意的地方就是shell的if语句对空格方面的要求比较严格(其实shell对所有语法的空格使用都比较严格),如果在需要空格的地方没有打 ...

  8. linux awk拼接字符串,shell awk命令字符串拼接

    摘要 腾兴网为您分享:shell awk命令字符串拼接,智联招聘,心视界,同花顺,手机管家等软件知识,以及一师一优课一课一名师登录,去视频水印,防沉迷解除,兼职猫招聘网,c4d渲染插件,社会实践活动登 ...

  9. Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句

    Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

最新文章

  1. 一个简单的反射拷贝一份新的实体类
  2. python爬虫Scrapy框架之增量式爬虫
  3. 二叉树两个结点的最低公共父结点 【微软面试100题 第七十五题】
  4. 计算中英混合字符串的自己字节长度
  5. 计算机网络-基本概念(1)【网络层】-ARP协议以及数据传输过程
  6. 蚂蚁组件 axure 蚂蚁_蚂蚁属性细微差别
  7. 递归函数与二分查找算法
  8. 产品经理小白面试经验总结
  9. m4s格式转换mp3_AnyMP4 MP3 Converter for Mac(音视频mp3格式转换工具)
  10. 2013年c语言课后作业答案,大一C语言课后习题答案.doc
  11. 高薪设计师必修课 AE移动UI动效设计从入门到实战
  12. vsCode实现美化代码
  13. IntelliJ Idea 解决 Could not autowire. No beans of 'xxxx' type found 的错误提示
  14. 超大文件上传解决方案:分片断点上传
  15. 依靠双工福禄克测试仪进行MPO电缆认证
  16. Prege(图计算框架)l: A System for Large-Scale Graph Processing(译)
  17. 如何关闭win10防火墙_Win技巧 | 如何关闭防火墙
  18. 如何删除打开方式列表中的侯选
  19. Robbins-Monro 随机逼近算法和序列学习(Sequential Learning)
  20. 用Windows live writer在blogbus写博客

热门文章

  1. 产品分析工具——KANO模型
  2. 查看tomcat版本号
  3. wma html在线播放,Html嵌入视频播放器(转)
  4. JavaScript断点调试与console.log(..)输出不一致
  5. [晋飞扬][茗润堂]5pt; FONT-W
  6. 浏览器无法打开windchill工作流模板或者生命周期模板
  7. Zen Cart 程序站内优化解决方案
  8. Keras神经网络层学习
  9. tf.app.flags.DEFINE_string()和tf.app.flags.FLAGS和tf.app.run()
  10. 【第3版emWin教程】第6章 emWin上手之STM32H7 DMA2D加速