条件测试语法

简介:

一般用于作简单的判断,语法有下列三种

格式1:test -参数 <测试表达式>

格式2:[<测试表达式>]

格式3:[[<测试表达式>]]

格式1和格式2是一样的。

格式3为扩展的test命令

提示:

在[[]]中可以使用通配符进行模式匹配。&&、||、<>等操作符可以应用于[[]]中,但不可以应用于[]中

下面是例子:

[root@zhouyu ~]# test -f file && echo 1||echo 0

0

上面的语法的意思就是说看看有没有这个文件,如果有就输出1如果没有就输出0,如果你想要相反的,可以在test后面加上感叹号!,这个意思就是说如果没有这个文件就输出1如果有就输出0,同样的,我们可以用第二各方法来测试,它们是一样的,而第三各比较特殊,它是扩展的。

[root@zhouyu ~]# [ -f file ] && echo 1 ||echo 0

0

如果你想要判断的语句要两个都存在的话,那么可以用第一或第二种方法,可是会比较麻烦,因为你要判断第一个文件存在不,如果存在你就要判断第二个文件存在不,可是如果你用第三种方法的话就不一样,你可以输入下列命令来判断

[root@zhouyu shell]# [[ -f filw && -d folder ]] && echo 1||echo 0

0

如果你想要了解[]中有什么参数可以用的话,可以用man bash命令去查看。

输入man bash然后在这个模式下输入/\-f,按enter,然后一直按n直到看到下图:


wKiom1hy6qTxIHFnAAAkeFrxgxc803.png

下面是一些常用的

wKiom1hy65HQ2SgUAAE0MH3oEeo536.png

字符串测试操作符的作用:比较两个字符串是否相同,字符串的长度是否为零,字符串是否为null等。

“=”比较两个字符串是否相同,与“==”等价

下面是常用的字符串

wKiom1hy7cHz2w8AAACVoeH9AdU938.png

注意:上面的字符串测试操作符号要用""保护起来,除了比较的,比如两个变量比较大小的。

如:[ -n "$myvar" ],$myvar一定要用""保护起来,不然出来的结果可能不是你想要的。

下面是两个整数比较的比较符

wKioL1hy74_BFbbfAACGDb33s6k254.png

所以本人建议是用第三种,扩展的

[root@zhouyu shell]# [ 1 -ne 0 ] && echo 1||echo 0

1

[root@zhouyu shell]# [ 1 -eq 0 ] && echo 1||echo 0  

0

[root@zhouyu shell]# [ 1 -gt 0 ] && echo 1||echo 0  

1

[root@zhouyu shell]# [ 1 -lt 0 ] && echo 1||echo 0 

0

[root@zhouyu shell]# [ 1 -ge 0 ] && echo 1||echo 0  

1

[root@zhouyu shell]# [ 1 -le 0 ] && echo 1||echo 0

0

下面是逻辑操作符

wKiom1hy8iCww9rHAAB6o0Vdpg4413.png

如果是-a的话,只有两边都为真才是对的,不然就是错的

-o是只要有一边为真就是真的

如图

[root@zhouyu shell]# file1=/etc/hosts;file2=/etc/sysconfig/network

[root@zhouyu shell]# [ -f "$file1" -a -e "$file2" ] && echo 1||echo 0

1

[root@zhouyu shell]# [ -f "$file1" -o -e "$file2" ] && echo 1||echo 0 

1

[root@zhouyu shell]# [ -f "$file1" -a -f "$file3" ] && echo 1||echo 0 

0

这里可能有同学想问了,我想让[]内的去判断,如果错了 我就执行后面三条命令,如果对了 就不执行,怎么办呢,下面我们来做实验

[root@zhouyu shell]# [ -f "$file2" ] || echo 1;echo 0;echo 2     

0

2

[root@zhouyu shell]# [ -f "$file3" ] || echo 1;echo 0;echo 2 

1

0

2

由上面可知,不管我们的判断对不对,都会执行echo 0和echo 2,可是我们的目的是如果对我们就不执行,不对我们就一次性执行三个命令,其实可以用下面这个方法

[root@zhouyu shell]# [ -f "$file3" ] || { echo 1;echo 0;echo 2    

> }

1

0

2

[root@zhouyu shell]# [ -f "$file2" ] || { echo 1;echo 0;echo 2 

> }

[root@zhouyu shell]# [ -n "$file3" ] && echo 1 || echo 0

0

[root@zhouyu shell]# [ -z "$file3" ] && echo 1 || echo 0 

1

特别强调,对于变量一定要加""号。

[root@zhouyu shell]# [ "$file3" = "$file4" ] && echo 1 || echo 0

1

记住了,它们中间一定要有空格,不然可能会出错,如下

[root@zhouyu shell]# echo $file1 $file2

/etc/hosts /etc/sysconfig/network

[root@zhouyu shell]# [ "$file1" == "$file2" ] && echo 1 || echo 0  

0

[root@zhouyu shell]# [ "$file1"=="$file2" ] && echo 1 || echo 0  

1

下面是比较两个参数的长度是否相等

[root@zhouyu shell]# [ "${#file1}" = "${#file2}" ] && echo 1 || echo 0

0

下面比较两个参数的字符串是否相等

[root@zhouyu shell]# [ "${file1}" = "${file2}" ] && echo 1 || echo 0  

0


本文转自 周子琪 51CTO博客,原文链接:http://blog.51cto.com/izhouyu/1890310


相关文章
Verilog语法入门(十三)测试文件
Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。
217 0
|
JavaScript 前端开发 测试技术
软件测试|测试平台vue3 模版语法
软件测试|测试平台vue3 模版语法
125 0
软件测试|测试平台vue3 模版语法
|
Shell
Shell条件测试符及if条件语句
Shell条件测试符及if条件语句
124 0
|
芯片 异构计算
Verilog语法之测试文件
要测试我们设计的模块功能是否正常,最直接的办法就是烧写到FPGA芯片中进行验证,但是这种方式往往结果并不直观,且出现问题后也不容易定位。为提高工作效率,我们可通过电脑仿真的方式进行功能验证,待仿真通过后,再烧写到FPGA中,这样可以快速排除电路中存在的绝大多数bug。在电脑上进行仿真,除了我们设计的功能模块之外,还需要另一模块——testbench,用于产生被测模块所需的激励信号。由于testbench只是用于电脑端的仿真,而不需要最终综合成电路,因此其写法更加灵活,可以使用verilog语法中的一些不可综合的语句,如initial、#、$display、$readmemb、forever等。
207 0
|
Shell 测试技术 数据安全/隐私保护
shell编程之条件语句(条件测试、if语句、case语句)(下)
要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。 使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。 使用test测试命令时,有以下两种形式:
131 0
|
Java Shell 测试技术
shell编程之条件语句(条件测试、if语句、case语句)(上)
要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。 使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。 使用test测试命令时,有以下两种形式:
172 1
|
JavaScript 前端开发 机器人
Cypress 的条件测试
Cypress 的条件测试
140 0
|
Shell
shell脚本中的特殊变量与if条件测试
shell脚本中的特殊变量与if条件测试
174 0
shell脚本中的特殊变量与if条件测试
|
Shell Linux
shell脚本之条件测试
shell脚本之条件测试
Cypress系列(58)- 停用条件测试
Cypress系列(58)- 停用条件测试
155 0

热门文章

最新文章