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. linux centos 03

    linux用户权限相关 root用户  相当于qq群的群主 sudo命令  相当于qq群的管理员 普通用户  相当于qq群的 水军 超级用户root的UID是 0  组ID也是 0  普通用户的UID ...

  2. docker下安装kafka和kafka-manager

    1.下载镜像 这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像 docker pull wurstmeister/zookeeper doc ...

  3. 跟我一起学Redis之看完这篇比常人多会三种类型实战(又搞了几个小时)

    前言 对于Redis而言,很多小伙伴只关注其关键的五大基础类型:string.hash.list.set.sorted set(有序集合),其实还有三种特殊类型在很多应用场景也比较适合使用,分别是:b ...

  4. form单提交后按钮变成失效变灰

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. 【Azure云服务 Cloud Service】Cloud Service的实例(VM)中的服务描述Software Protection 与 Windows Defender, 如何设置Windows Defender Antivirus服务

    1)Software Protection 与 Windows Defender是两个独立的服务.在Windows 服务中他们的描述分别为 Software Protection Enables th ...

  6. Docker学习笔记之-在CentOS中安装Docker

    上一节演示了如何 通过Xshell连接CentOS服务,链接:Docker学习笔记之-通过Xshell连接 CentOS服务 本节将演示 如何在CentOS中安装 Docker 第一步:更新系统包到最 ...

  7. ElasticSearch研究

    前言 ​ ES相关技术文档,很久之前看的,一门技术时间长不去研究就会容易忘了,应有些小伙伴的要求希望我做一期ES技术专栏,我就把以前看过的相关文档整理整理,给大家分享下. 1 ElasticSearc ...

  8. 数据结构(C++)——顺序表

    顺序表和链表的比较 1.存取方式 顺序表可以随机访问,而链表只能从表头顺序查找.(因此经常查找顺序表某一个元素时,顺序表更适合) 2.逻辑结构与物理结构 顺序表中,逻辑上相邻的元素,其物理存储位置也相 ...

  9. router-view组件在app.vue中渲染不出来怎么办

    1.在app.vue使用router-view组件直接渲染 页面什么都没显示,可能问题出在路由配置上了,检查路由是否配置完好,路由挂载那里必须使用routes属性 2.在app.vue中router- ...

  10. golang1.16内嵌静态资源指南

    今天是万圣节,也是golang1.16新特性冻结的日子.不得不说自从go2路线发布之后golang新特性的迭代速度也飞速提升,1.16中有相当多的重要更新,包括io标准库的重构,语言内置的静态资源嵌入 ...