1. 字符串测试操作符
  字符串测试操作符的作用:比较两个字符串是否相同、字符串长度是否为零,字符串是否为null(注:bash区分零长度字符串和空字符串)等。
  “=”比较两个字符串是否相同,与==等价,如if[ "$a" = "$b" ],其中$a这样的变量最好用""括起来,因为如果中间有空格,*等符号就可能出错了,当然更好的方法就是[ "${a}" = "${b}" ]。"!=" 比较两个字符串是否相同,不同则为“是”。
  在书写测试表达式时,可以使用表1.3.1中的字符串测试操作符。
   表1.3.1中 字符串测试操作符

特别注意:以上表格中的字符串测试操作符号务必要用" "引起来。

  字符串测试操作符提示:
    1. -n 比较字符串长度是否不为零,如果不为零则为真,如: [ -n "$myvar" ]
    2. -z 比较字符串长度是否等于零,如果等于零则为为真,如:[ -z "$myvar" ]
2. 整数二元比较操作符
    在书写测试表达式时,可以使用表1.3.6中的整数二元比较操作符
  表1.3.6中整数二元比较操作符、

提示:
   1) “<”符号意思是小于,if [[ "$a" < "$b" ]],if[ "$a" \< "$b" ]。在单[ ]中需要转义,因为shell也用<和>重定向
   2) “>”符号意思是小于,if [[ "$a" > "$b" ]],if[ "$a" \> "$b" ]。在单[ ]中需要转义,因为shell也用<和>重定向
   3) “=”符号意思是小于,if [[ "$a" = "$b" ]],if[ "$a" = "$b" ]。在单[ ] 中不需要转义
提示:
  经过实践,"=" 和 "!=" 在[ ]中使用不需要转义,包含">" 和"<" 的符号在[ ]中使用需要转义,对于数字不转义的结果未必会报错,但是结果可能不会对。
  范例1:二元数字比较

[root@test-1 ~]# [ 2 > 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 < 1 ] && echo 1 ||echo 0
1 #这里的结果逻辑不对,条件不成立,应该返回 0
[root@test-1 ~]# [ 2 \< 1 ] && echo 1 ||echo 0
0 #转义后是正确的。
[root@test-1 ~]# [ 2 -gt 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 -lt 1 ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 2 > 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [[ 2 > 1 ]] && echo 1 ||echo 0
1
[root@test-1 ~]# [[ 2 < 1 ]] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 2 = 1 ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 1 = 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 = 1 ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 2 = 2 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 != 2 ] && echo 1 ||echo 0
0
提示:经过实践,“=”和“!=”在[ ]中使用不需要转义也可以。
[root@test-1 ~]# [[ 2 -lt 1 ]] && echo 1 ||echo 0
0
[root@test-1 ~]# [[ 2 -gt 1 ]] && echo 1 ||echo 0
1

范例2:二元字符比较

[root@test-1 ~]# [ "a" > "bc" ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ "a" < "bc" ] && echo 1 ||echo 0
1 #上面两个条件不一样,但结果一样,虽然没报语法错误,但显然不对。
[root@test-1 ~]# [ "a" \> "bc" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ "a" \< "bc" ] && echo 1 ||echo 0
1
#加上对比较的转义后,逻辑上显示正确了。

  

shell-字符串及整数操作符讲解与多实践的更多相关文章

  1. Shell 字符串比较

    转自网络 Shell字符串比较 收藏 Shell 中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等. 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. --- ...

  2. [LeetCode] String to Integer (atoi) 字符串转为整数

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  3. linux shell 字符串操作(长度,查找,替换)详解

    linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...

  4. 【转】shell字符串截取

    shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...

  5. [LeetCode] 8. String to Integer (atoi) 字符串转为整数

    Implement atoi which converts a string to an integer. The function first discards as many whitespace ...

  6. 【LeetCode】8. String to Integer (atoi) 字符串转换整数

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:字符串转整数,atoi,题解,Leetcode, 力扣,P ...

  7. 【LintCode】转换字符串到整数

    问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...

  8. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

  9. PostgreSql字符串函数和操作符

    本节描述了用于检查和操作字符串数值的函数和操作符.在这个环境中的字符串包括所有 character, character varying, text 类型的值.除非另外说明,所有下面列出的函数都可以处 ...

随机推荐

  1. Java8 Strean api

    Stream 遍历数据集的高级迭代器.使用StreamApi让代码: 声明式:更简洁,更易读: 可复合:更灵活: 可并行:性能更好: 使用流 流的使用一般包括三件事: 一个数据源(如集合)来执行一个查 ...

  2. 剑指 Offer 56 - II. 数组中数字出现的次数 II

    题目描述 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次.请找出那个只出现一次的数字. 示例1: 输入:nums = [3,4,3,3] 输出:4 示例2: 输入:nums = ...

  3. ZT:C/C++ 字符串与数字相互转换

    转载地址:https://www.cnblogs.com/happygirl-zjj/p/4633789.html 一.利用stringstream类 1. 字符串到整数     stringstre ...

  4. 下载安装gradle

    1.登录官网:www.gradle.org,进入到下图的界面: 2.点击Install Gradle,跳转到下一个界面后: 3.下载 4.下载成功后,解压到任意位置,将路径添加到path路径下,选择我 ...

  5. JZOJ1496 页

    Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场精彩的天马队列变换表演.首先,战神安排n头高度不同 ...

  6. 最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇)

    1. 前言 在爬虫.自动化.数据分析.软件测试.Web 等日常操作中,除 JSON.YAML.XML 外,还有一些数据经常会用到,比如:Mysql.Sqlite.Redis.MongoDB.Memch ...

  7. jekins使用的坑

    1.日志打满 一个周末回来,服务器的磁盘就写满了 现象如下,最后是修改catalina脚本 添加了如下配置 ###jekins log problem#########export JAVA_OPTS ...

  8. 1.Strom-概述

  9. 【FLASK】钩子函数的使用

    from flask import Flask from flask import abort app = Flask(__name__) # 在第一次请求之前调用,可以在此方法内部做一些初始化操作 ...

  10. 每天一个dos命令-net.

    Rem:关于net命令相关的常用实例(如果cmd中执行net相关命令,报错:Access is denied. 可以右键cmd,以管理员身份运行即可!) 1.创建一个新账号:net user ifsf ...