bash条件测试

简介:

表达式的类别:

  • 文件表达式

  • 数值表达式

  • 字符串表达式

数值表达式

    -gt:是否大于;     大于,全拼为greate than

    -ge:是否大于等于;   大于等于,全拼为greater equal

    -eq:是否等于;     相等,全拼为equal

    -ne:是否不等于;    不相等,全拼为not equal

    -lt:是否小于;     小于,全拼为less than

    -le:是否小于等于;   小于等于,全拼为less equal

字符串表达式

    ==:是否等于;

    >:是否大于;

    <:是否小于;

    !=:是否不等于;

    =~:左侧字符串是否能够被右侧的PATTERN所匹配;

Note:此表达式一般用于` `中;

    -z "STRING":测试字符串是否为空,空则为真,不空则为假;

    -n "STRING":测试字符串是否不空,不空则为真,空则为假;

Note:用于字符串比较时乃至的操作数都应该使用引导

示例:

[root@C7-1 ~]# name=obama

[root@C7-1 ~]# [ -z "$name" ]

[root@C7-1 ~]# echo $?

1


存在性测试

-a FILE:这个很少用,一般用-e

-e FILE:文件存在测试,存在为真。


存在性及类别测试

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

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

-f FILE:是否存在且为普通文件,存在为真,否则为假

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

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

-p FILE:是否存在且为命令管道文件;

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

文件权限测试:

-r FILE:是否存在且可读

-w FILE:是否存在且可写

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

文件特殊权限测试:

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

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

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

文件大小测试:

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

文件是否打开:

-t fd:fd表示文件描述符是否已打开且与某终端相关

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

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

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

双目测试:

FILE1 -ef FILE2:FILE1与FILE2是否指向同一个设备上的相同inode

FILE1 -nt FILE2:FILE1是否新于FILE2;

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

组合测试条件:


引用:

Linux Shell脚本攻略

字符串比较

使用字符串比较时,最好用双中括号,因为有时候采用单个中括号会产生错误,所以最好避开它们。

可以用下面的方法检查两个字符串,看看它们是否相同。

  • [[ $str1 = $str2 ]]:当str1等于str2时,返回真。也就是说,str1和str2包含的文本是一模一样的。

  • [[ $str1 == $str2 ]]:这是检查字符串是否相等的另一种写法。

也可以检查两个字符串是否不同。

  • [[ $str1 != $str2 ]]:如果str1和str2不相同,则返回真。

我们还可以检查字符串的字母序情况,具体如下所示。

  • [[ $str1 > $str2 ]]:如果str1的字母序比str2大,则返回真。

  • [[ $str1 < $str2 ]]:如果str1的字母序比str2小,则返回真。

  • [[ -z $str1 ]]:如果str1包含的是空字符串,则返回真。

  • [[ -n $str1 ]]:如果str1包含的是非空字符串,则返回真。


逻辑运算:

第一种方式:

COMMAND1 && COMMAND2     注:先执行COMMAND1,只有在COMMAND1执行成功时,COMMAND2才能够执行

COMMAND1 || COMMAND2     注:先执行COMMAND1,只有在COMMAND1执行失败时,COMMAND2才能够执行

! COMMAND

[ -e FILE ] && [ -r FILE ] 存在且可读

第二种方式:

EXPRESSION1 -a EXPRESSION2

EXPRESSION1 -o EXPRESSION2


示例

wKiom1g_mImCElEpAAFRqAuQ_kI202.jpg


wKiom1g_mIqRIO_fAACEzQ30IRA972.jpg


wKioL1g_mIvQfUhFAAEYnWglBhc811.jpg


wKiom1g_mIyDtZFnAAH35LXC2PU079.jpg




[zdw@c7 ~]$ [ ! \( -r /tmp/file100.sh -o -w /tmp/file100.sh \) ]

[zdw@c7 ~]$ echo $?

0

d





      本文转自cix123  51CTO博客,原文链接:http://blog.51cto.com/zhaodongwei/1878403,如需转载请自行联系原作者



相关文章
|
10月前
|
Shell
【Shell编程】Shell中Bash变量-数值运算、运算符变量、测试和内容替换
【Shell编程】Shell中Bash变量-数值运算、运算符变量、测试和内容替换
56 0
|
固态存储 Linux Shell
阿里云Linux服务器性能测试wget -qO- bench.sh | bash
阿里云服务器性能测试,使用知名博主的wget -qO- bench.sh | bash来测试下阿里云服务器CPU Model(CPU型号)、CPU Cores(核数)、CPU Frequency(主频)、Total Disk(磁盘容量)、Total Mem(内存)、Swap(虚拟内存)、系统发行版本、Linux内核、地域节点、磁盘I/O读写速度及云服务器上传下载速度测试
790 0
阿里云Linux服务器性能测试wget -qO- bench.sh | bash
|
Shell
Shell条件测试符及if条件语句
Shell条件测试符及if条件语句
120 0
|
Shell 测试技术 数据安全/隐私保护
shell编程之条件语句(条件测试、if语句、case语句)(下)
要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。 使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。 使用test测试命令时,有以下两种形式:
126 0
|
Java Shell 测试技术
shell编程之条件语句(条件测试、if语句、case语句)(上)
要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。 使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。 使用test测试命令时,有以下两种形式:
167 1
|
JavaScript 前端开发 机器人
Cypress 的条件测试
Cypress 的条件测试
138 0
|
Shell
shell脚本中的特殊变量与if条件测试
shell脚本中的特殊变量与if条件测试
169 0
shell脚本中的特殊变量与if条件测试
|
Shell Linux
shell脚本之条件测试
shell脚本之条件测试
Cypress系列(58)- 停用条件测试
Cypress系列(58)- 停用条件测试
152 0
|
SQL 算法 关系型数据库
PostgreSQL 任意字段数组合 AND\OR 条件,指定返回结果条数,构造测试数据算法举例
标签 PostgreSQL , 构造测试数据 , 任意字段组合AND,OR查询 , 指定结果集大小 背景 在进行一些实际的POC测试时,需要根据业务提出的需求构造数据,比如按照任意字段数组合 AND\OR 条件,指定返回结果条数,构造测试数据。
1434 0