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. 发布MeteoInfo Java 1.2.2

    主要更新了MeteoInfoLab至0.2版,已经有一些实用功能了,这里做些简单的介绍. 下载地址1,MeteoInfo网站:http://www.meteothinker.com/下载地址2,百度云 ...

  2. 如何使用懒加载 - umi

    .umirc.js文件 plugins: [       dynamicImport: true,

  3. linux(centos8):用grep命令查找文件内容

    一,grep的用途: linux平台有最常用的三大文本处理工具:awk/sed/grep grep的功能:搜索指定文件的内容,按照指定的模式匹配,并输出匹配内容所在的行. 需要注意的地方:grep只支 ...

  4. 字节跳动2020Java面经,你离高薪就只差一片面试题了

    前言 经历了惨痛的春招与秋招之后,也积攒了一些面经,希望能对大家有所帮助.由于字数限制需要答案的可以关注GZH[程序员空间] 免费领取完整版PDF 其他 什什么是幂等?什什么情况下需要考虑幂等?你怎么 ...

  5. IDEA出现Error Loading Project: Cannot load module xxx报错

    IDEA出现Error Loading Project: Cannot load module xxx报错,是因为IDEA不能找到模块xxx加载,应该是添加/新建了xxx模块,之后又删除了该模块,但没 ...

  6. python抓取动态验证码,具体第几帧数的位置静态图片

    一.代码+注解 import os from PIL import Image import requests import io def save_img(): headers = { 'User- ...

  7. Kubernetes K8S之调度器kube-scheduler详解

    Kubernetes K8S之调度器kube-scheduler概述与详解 kube-scheduler调度概述 在 Kubernetes 中,调度是指将 Pod 放置到合适的 Node 节点上,然后 ...

  8. Lambda表达式(三)

    public class Test04 { public static void main(String[] args) { /* * Java8中,有一个新的类:Stream类型,它代表一个数据加工 ...

  9. B树摘要

    BTree 以下内容是根据<算法导论>摘要而来,由于国内书籍对B树的定义是以阶来定义,而<算法导论>中使用的是最小度来定义,并且节点中关键字个数也不相同,在翻看网上博客时,产生 ...

  10. [阿里DIN] 从论文源码学习 之 embedding层如何自动更新

    [阿里DIN] 从论文源码学习 之 embedding层如何自动更新 目录 [阿里DIN] 从论文源码学习 之 embedding层如何自动更新 0x00 摘要 0x01 DIN源码 1.1 问题 1 ...