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. poj 2774 Long Long Message【SA】

    把两个串接到一起求一个SA,然后找最大的sa[i]和sa[i-1]不是一个串的he[i] #include<iostream> #include<cstdio> #includ ...

  2. Jmeter之Json Path Extractor 接受上一个请求的响应参数

    最近在使用Jmeter进行接口测试,被一个问题困扰了很久,就是第二个请求如何接收上一个请求响应中的参数,刚开始尝试着用网上普遍说的正则表达式,长了了N多次之,都没有达到我想要的效果,被整的够惨,于是, ...

  3. HDU6447(离散化扫描线+树状数组)

    一眼看过去就x排序扫描一下,y是1e9的离散化一下,每层用树状数组维护一下,然后像dp倒着循环似的树状数组就用y倒着插就可行了. 类似题目练习:BZOJ4653.BZOJ1218 #pragma co ...

  4. UVa 1218 Perfect Service 完美的服务

    ***状态设计值得一看dp[u][0]表示u是服务器(以下v均指任意u的子结点,son指u的所有子结点)ap[u][0]=sum{dp[v][1]}+1//错误,服务器是可以和其他服务器相邻的dp[u ...

  5. 复习Java和前端、后端框架等。

    以下便是我开始复习时做的笔记.

  6. sql基础语法-联接查询

    交叉联接 1.不带where条件的,将返回两个表的 行乘积 select c.*, e.* from Sales.Customers c cross join hr.Employees e 2.带wh ...

  7. h5-17-元素拖放

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Excel 宏练习

    任务描述: 利用 Excel 绘制函数图像 f(x)=x^2/3+0.9*(3.3-x^2)^1/2*sin(a*x),并通过按钮事件来刷新图像. 问题分析: 可以参考类似 Matlab 绘图的方式, ...

  9. [已读]编写高质量代码 改善JavaScript程序的188个建议

    吐槽一万遍,买的最后悔的一本,没有之一,大量篇幅抄袭<高性能javascript>,我记得还有部分抄袭<javascript精粹>,<javascript模式>有没 ...

  10. 动手实现 React-redux(一):初始化工程

    可以看到 Redux 并不复杂,它那些看起来匪夷所思的设定其实都是为了解决特定的问题而存在的,我们把问题想清楚以后就不难理解它的那些奇怪的设定了.这节开始我们来看看如何把 Redux 和 React. ...