1.逻辑运算符:与&&     或||    非!

 &&:双目操作符:与运算中:如果第一个数为假,结果一定为假   ==> 短路操作符

||:双目操作符:或运算中:如果第一个数为真,结果一定为真    ==> 短路操作符

!:单目操作符:  对数取反.

例子:

 [root@lbg test]# echo 2 && echo 3
2
3
[root@lbg test]# echo 2 ||  echo 3 
2
[root@lbg test]# 

2.测试表达式

 [ 表达式 ]  ---比较数字大小 ,表达式与中括号两端必须有空格
 [[ 表达式 ]]  --比较字符大小,表达式与中括号两端必须有空格。
 
3.算术比较运算符:
  num1 -eq num2         //测试num1是否等于num2  (eq:equal)

-ne                //测试num1是否不等于num2

-gt             //大于 great than

-lt             //小于 less than

-ge             //大于等于 great  equal

-le             //小于等于 less equal

例子:

[root@lbg test]# [ 1 -lt 2 ]  && echo yes || echo no
yes
[root@lbg test]# [ 1 -gt 2 ]  && echo yes || echo no
no
4.字符串测试
 'string1' == 'string2'                    //做等值比较

!=,<>              //不等值比较

-n "$a"           //跟变量名,a变量的值的长度非0为真

-z "$a"         //测试是否为空的,空为真,非空为假,即值得长度为0为真

例子:

[root@lbg test]# [[ a == b ]] && echo yes || echo no
no
[root@lbg test]# [[ a != b ]] && echo yes || echo no
yes
[root@lbg test]# echo $a
123
[root@lbg test]# [[ -n $a ]] && echo yes || echo no
yes
[root@lbg test]# declare b      ---$b为空
[root@lbg test]# [[ -n $b ]] && echo yes || echo no
no
[root@lbg test]# [[ -z $b ]] && echo yes || echo no
yes
5.文件测试
 -e        /path/to/somewhere    是否存在,存在为真    --exist

-f   /path/to/somewhere  是否是文件,是则为真      --file

-d          //测试是否是目录,是为真          --directory

-l          //测试是否是链接,是为真         --link

-r          //是否可读               --read

-w          //是否可写              --write

-x          //是否可执行             --execute

说明:文件测试用单个[]或者[[]]都行。

例子:

[root@lbg test]# ll                    ----只有普通文件a
-rw-r--r-- 1 root root 37 Oct  5 19:13 a
[root@lbg test]# [[ -e /test/a ]] && echo yes || echo no
yes
[root@lbg test]# [[ -e /test/b ]] && echo yes || echo no
no
[root@lbg test]# [[ -d /test/a ]] && echo yes || echo no
no
[root@lbg test]# [ -x /test/a ] && echo yes || echo no  
no

6.组合条件测试

 !                     //取反,写在表达式之前,且用空格隔开

-a      //与条件,写在[]里面,表示and

-o      //或条件,写在[]里面,表示or

例子:

[root@lbg test]# [  d == f  ] && echo yes || echo no
no 
[root@lbg test]# [ ! d == f  ] && echo yes || echo no 
yes
[root@lbg test]# [ ! d == f  ] && [ a == b ]&& echo yes || echo no
no
[root@lbg test]# [ ! d == f -a c == b ]  && echo yes || echo no
no
[root@lbg test]# [ ! d == f -o c == b ]  && echo yes || echo no
yes

shell中数字、字符串、文件比较测试的更多相关文章

  1. Linux Shell 04 数字/字符串/文件测试

    一. 数字测试 格式:n1  -op  n2 测试操作op: eq/ne/le/ge/lt/gt    -->    等于/不等于/小于等于/大于等于/小于/大于 1. 数字比较可以使用特殊的( ...

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

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

  3. shell中取字符串子串的几种方式 截取substr

    shell中取字符串子串的几种方式 echo "123456789" | awk '{print substr($0,5,2)}' 截取 1)awk中函数substrsubstr( ...

  4. shell中截取字符串的方法总结

    shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  5. shell中的字符串操作和数学运算

    字符串操作   变量赋值: 说明:变量值可以用单引号.双引号.或者不加任何引号来赋值给变量 变量名="变量值" 变量名='变量值' 变量名=变量值 例如:str="hel ...

  6. 在Shell中使用函数文件

    需要编写一个较庞大的脚本时,可能会涉及许多函数.变量.这是通常建议将众多的函数.变量放入一个单独的脚本内.这样做的好处很明显,不用担心某个函数.变量是否已经被定义和使用,也不用频繁地定义.清除函数和变 ...

  7. LinuxShell脚本编程基础5--数值,字符串,文件状态测试,((..))和[[..]]的使用

    1.数值比较 ! /bin/bash echo "enter a score:" read num1 ] then echo "Very Good" elif ...

  8. 【前端_js】js中数字字符串之间的比较

    js中字符串间的比较是按照位次优先,比较各字符的ASCII大小,包括数字字符串之间的比较. 1.console.log("1"<"3");//true 2 ...

  9. Shell中判断字符串是否为数字的6种方法分享

    #!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&a ...

随机推荐

  1. [论文阅读]阿里DIN深度兴趣网络之总体解读

    [论文阅读]阿里DIN深度兴趣网络之总体解读 目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词解释 ...

  2. Java NIO:选择器

    最近打算把Java网络编程相关的知识深入一下(IO.NIO.Socket编程.Netty) Java NIO主要需要理解缓冲区.通道.选择器三个核心概念,作为对Java I/O的补充, 以提升大批量数 ...

  3. gin教程

    Golang Gin 实战(十)| XML渲染 Golang Gin 实战(九)| JSONP跨域和劫持 Golang Gin 实战(八)| JSON渲染输出 Golang Gin 实战(七)| 分组 ...

  4. python matplotlib配置

    import matplotlib.pyplot as plt import matplotlib as mpl from matplotlib.font_manager import FontPro ...

  5. 【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)

    测试App Service是否可以访问其他DNS 当应用服务(Azure App Service)创建完成后,想通过ping命令来查看是否可以访问其他站点或解析DNS,但是发现ping命令无法使用.这 ...

  6. JS初级运算符优先级

    该图优先级由 高到低 显示

  7. spark load data from mysql

    spark load data from mysql code first 本机通过spark-shell.cmd启动一个spark进程 SparkSession spark = SparkSessi ...

  8. MFiX-DEM中的串行碰撞搜索

    在计算颗粒碰撞的时候,需要进行neighbor颗粒的搜寻,只知道大概是基于网格与颗粒绑定的方式,但是具体的实现方式还是比较模糊.搜寻部分代码如下 (mfix-19.2.2): 可以直接观察到的是,这里 ...

  9. 微信小程序picker组件两列关联使用方式

    在使用微信小程序picker组件时候,可以设置属性   mode = multiSelector   意为多列选择,关联选择,当第一列发生改变时侯,第二列甚至第三列发生相应的改变.但是官方文档上给的只 ...

  10. BadBoy+JMeter应用过程中遇到的问题汇总

    前几天对HTTPS协议的系统做压力测试,用LoadRunner录制脚本过程中,系统登录后跳转的页面一直加载不出来,试了很多办法没解决这个问题.转而利用BadBoy+JMeter进行压测.以下为在运用B ...