test命令

长格式的例子:

test "$A" == "$B" && echo "Strings are equal"

test “$A” -eq “$B” && echo "Integers are equal"

两个 == 是表示两个字符串是否完全相同的意思

而-eq是两个数字是否相等的意思。

简写格式的例子:

[ "$A" == "$B" ] && echo "Strings are equal"

[ "$A" -eq "$B" ] && echo "Integers are equal

-v 用来检测一个变量是否被设置过值,若设置过则$?返回0,没设置过值返回1.

数值测试:

 –gt //是否大于

 -ge //是否大于等于

-eq //是否等于

-ne //是否不等于

-lt //是否小于

-le //是否小于等于

这些数值测试可以是整数或负数,甚至算数表达式来比较。但不支持小数点。

test有一个专用的命令中括号

左中括号[ 是一个命令,空格加右中括号是它的参数

具体如下:

# [ A ==A ]

# echo $?

# 0

也就是[ A ==A ] 等于 test "$A" == "$A".

左右中括号与后面的参数之间必须有空格.

字符串测试

字符串测试:注意: 此表达式一般用于[[ ]]中;扩展的正则表达式

== 是否等于 示例: [[ a == b ]]中, a == b 与中括号之间都有空格.

> ascii码是否大于ascii码

< 是否小于

!= 是否不等于

=~ 左侧字符串是否能够被右侧的PATTERN所匹配 即 左侧字符串是否包含右侧的,包含为真,不包含为假.

注意:用于字符串比较时的用到的操作数都应该使用引号

-z "STRING“ 字符串是否为空,空为真,不空为假,举例

# A=123

# [ -z $A ]

# echo $?

# 1

-z是当变量有值的时候为假,没有被赋值的时候为真.

-n "STRING“ 字符串是否不空,不空为真,空为假,举例

# A=123

# [ -z $A ]

# echo $?

# 0

-n是当变量有值的时候为真,没有被赋值的时候为假.

存在性测试

-a FILE:同-e FILE:

文件存在性测试,存在为真,否则为假

# [ -e /etc/passwd ]等于test -e /etc/passwda 等于test -a /etc/passwda

# echo $?

# 0

存在性及类别测试

-b FILE://是否存在且为块设备文件

-c FILE://是否存在且为字符设备文件

-d FILE://是否存在且为目录文件

-f FILE://是否存在且为普通文件

-h FILE 或 -L FILE://存在且为符号链接文件

-p FILE://是否存在且为命名管道文件

-S FILE:是否存在且为套接字文件

权限测试

文件权限测试:

-r FILE://是否存在且可读

-w FILE: //是否存在且可写

-x FILE: //是否存在且可执行

[ -r /app/passwd -o -w /app/passwd ]  //判断/app/passwd文件是否存在,并拥有读或写的权限. 不能写为 -rw

[ -r /app/passwd -a -w /app/passwd ]  //判断/app/passwd文件是否存在,并拥有读和写的权限. 不能写为 -rw

文件特殊权限测试:

-u FILE://是否存在且拥有suid权限

-g FILE://是否存在且拥有sgid权限

-k FILE://是否存在且拥有sticky权限

文件大小测试:

-s FILE: //是否存在且非空

-t fd: fd //文件描述符是否在某终端已经打开

-N FILE://文件自从上一次被读取之后是否被修改过

-O FILE://当前有效用户是否为文件属主

-G FILE://当前有效用户是否为文件属组

双目测试:

FILE1 -ef FILE2: //FILE1是否是FILE2的硬链接,主要看是否为同一个inode号。

FILE1 -nt FILE2: //FILE1是否新于FILE2(mtime)

FILE1 -ot FILE2: //FILE1是否旧于FILE2

多条件判断.并且,或者,非..

第一种方式:

COMMAND1 && COMMAND2 并且 &&等于 -a

COMMAND1 || COMMAND2 或者 ||等于 -o

! COMMAND 非

如:

[[ -r FILE ]] && [[ -w FILE ]] 等于 [ -r /app/passwd -a -w /app/passwd ]

[[ -r FILE ]] || [[ -w FILE ]] 等于 [ -r /app/passwd -o -w /app/passwd ]

第二种方式:

条件1 -a 条件2 并且

条件1 -o 条件2 或者

! EXPRESSION

必须使用测试命令进行,即test或[]

Linux test命令的更多相关文章

  1. linux grep命令

    linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...

  2. Linux常用命令(一)

    Linux常用命令 1. pwd查看当前路径(Print Working Directory)    [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...

  3. Linux下命令行安装weblogic10.3.6

    Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...

  4. Linux paste命令

    Linux paste命令用于合并文件的列. paste指令会把每个文件以列对列的方式,一列列地加以合并. 语法 paste [-s][-d <间隔字符>][--help][--versi ...

  5. 20145222《信息安全系统设计基础》Linux常用命令汇总

    学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...

  6. Linux sudo 命令的应用

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  7. linux 基础命令与文件管理

      Linux终端介绍 Shell提示符 Bash Shell基本语法 基本命令的使用:ls.pwd.cd 查看系统和BIOS硬件时间 Linux如何获得帮助 Linux关机命令:shutdow.in ...

  8. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  9. linux常用命令的介绍

    本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...

  10. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

随机推荐

  1. iperf工具学习记录

    源码下载地址:http://sourceforge.net/projects/iperf/ 编译命令: tar -zxvf iperf-2.0.5.tar.gz cd iperf-2.0.5 ./co ...

  2. 第二类Stirling数初探 By cellur925

    上午noi.ac崩崩崩了,栽在组合数学上,虽说最后在辰哥&Chemist的指导下A掉了此题,也发现自己组合数学太弱了qwq. 在luogu上找题,结果找到了一个第二类斯特林数的题(还是双倍经验 ...

  3. nginx使用autoindex

    有时候一个nginx服务就是为了用来下载文件的,网上很多下载服务都是这样的 这个很简单 在http段加上以下参数,重启nginx就行. autoindex on; autoindex_exact_si ...

  4. The Django Book学习笔记 04 模板

    如果使用这种方法制作文章肯定不是一个好方法,尽管它便于你理解是怎么工作的. def current_datetime(request): now = datetime.datetime.now() h ...

  5. Suricata的输出

    不多说,直接上干货! 见官网 https://suricata.readthedocs.io/en/latest/output/index.html 总的来说,Suricata采集下来的数据输出分为: ...

  6. js中不容小觑的var声明

    在学习vue相关课程中,有一次跟着老师敲代码,写出了如下代码: var Child = { template:`<div @click='handleClick'><slot> ...

  7. Vue2.0实现路由

    Vue2.0和1.0实现路由的方法有差别,现在我用Vue 2.0实现路由跳转,话不多说,直接上代码 HTML代码 <div class="tab"> <route ...

  8. mysql单向自动同步

    mysql自动同步 以下教程均使用mysql自带的自动同步功能 全库单向自动同步 本例把192.168.3.45上名称为ewater_main的数据库自动同步到192.168.3.68的ewater_ ...

  9. Android(java)学习笔记172:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)

    1. 接口 接口可以隐藏代码内部的细节,只暴露程序员想暴露的方法 2. 利用上面的思想优化之前的案例:服务(service)之绑定服务调用服务里面的方法,如下: (1)这里MainActivity.j ...

  10. 作为一个iOS Developer 为什么我不用Swift?

    1.开始 在去年这个时候接手了一个iOS项目,项目主用Swift语言进行开发,对于部分第三方Objective C开源库则使用bridge的方式进行调用 当时项目的规模大概是不超过15个页面,功能也比 ...