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. 怎么让普通用户达到root用户也可以拥有权限修改文件(CentOS系统)

    为什么会提出这个问题呢? 答:因为啊,比如我们在大数据集群搭建的时候,经常会需要配置环境变量,如/etc/profile.那么,问题来了,每次必须得都切换到root用户才能,但是呢,如何可以在普通用户 ...

  2. wordpress数据库结构及表说明

    数据表结构: wp_commentmeta:存储评论的元数据wp_comments:存储评论wp_links:存储友情链接(Blogroll)wp_options:存储WordPress系统选项和插件 ...

  3. JSP | 基础 | 两种方式循环输出

    用循环连续输出三个你好,字体从小变大 第一种: <body> <%! //通过表达式方式调用实现 String HelloJSP1(){ String str = "&qu ...

  4. HTML5移动端手机网站开发流程

    基本上开发手机网站,可大致分为两大类.一类是用框架开发手机网站.一类是自己手写手机网站. 一.框架开发手机网站 一般用现在常用的开发框架有:目前Web前端最火的框架(BootStrap).jQuery ...

  5. LCA Codeforces 100685G Gadget Hackwrench

    题目传送门 题意:一棵有向的树,问u到v是否可达 分析:假设是无向树,DFS时正向的权值+1,反向的权值-1,然后找到LCA后判断dep数组和d数组就可以了 /******************** ...

  6. Oracle JDK各版本下载地址记录

    Oracle JDK各版本下载地址: https://www.oracle.com/technetwork/java/javase/archive-139210.html

  7. php中三元运算符用法

    代码如下: <?php $handle=fopen("../good/html/1.txt", "r"); while(!feof($handle)) / ...

  8. 1. Visio Web 形状 - 无法与 Web 服务器建立连接。请稍后重新进行搜索。处理方式

    今天在Visio中使用“搜索形状”,发现不管搜什么,结果都是:Visio Web 形状 - 无法与 Web 服务器建立连接.请稍后重新进行搜索 具体解决方案如下:控制面板=>添加或删除程序=&g ...

  9. ubuntu server 14.04LTS升级Python3.5

    依次执行如下命令:需要root权限,普通用户可以使用sudo 来执行以下命令 root@ubuntu-server:~# add-apt-repository ppa:fkrull/deadsnake ...

  10. 关于ES6的Promise的使用深入理解

    ES6的promise对象研究 什么叫promise? Promise对象可以理解为一次执行的异步操作,使用promise对象之后可以使用一种链式调用的方式来组织代码:让代码更加的直观. 那我们为什么 ...