博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
007-Shell test 命令,[],[[]]
阅读量:5891 次
发布时间:2019-06-19

本文共 1270 字,大约阅读时间需要 4 分钟。

一、概述

  test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

  其中[]完全等价于test,只是写法不同。双中括号[[]]基本等价于[],它支持更多的条件表达式,还允许在双中括号内使用逻辑运算符"&&"、"||"、"!"和"()",但这些使用单中括号都能实现,只不过多写几个单中括号而已。单中括号[]无法实现的功能是正则表达式匹配,而[[]]可以实现。因此,在能使用单中括号的情况下,无需考虑使用双中括号。

  test、[ ]以及[[ ]]都使用条件表达式来完成测试。test和[]用法虽简单,但语法比较复杂,反而是[[]]的语法较为简单。

1.2、数值测试

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

实例演示:

num1=100num2=100if test $[num1] -eq $[num2]then    echo '两个数相等!'else    echo '两个数不相等!'fi

输出结果:

两个数相等!

代码中的 [] 执行基本的算数运算,如:

#!/bin/basha=5b=6result=$[a+b] # 注意等号两边不能有空格echo "result 为: $result"

结果为:

result 为: 11

 

1.2、字符串测试

参数 说明
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

实例演示:

num1="ru1noob"num2="runoob"if test $num1 = $num2then    echo '两个字符串相等!'else    echo '两个字符串不相等!'fi

输出结果:

两个字符串不相等!

 

1.3、文件测试

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

实例演示:

cd /binif test -e ./bashthen    echo '文件已存在!'else    echo '文件不存在!'fi

输出结果:

文件已存在!

另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。例如:

cd /binif test -e ./notFile -o -e ./bashthen    echo '至少有一个文件存在!'else    echo '两个文件都不存在'fi

输出结果:

至少有一个文件存在!

 

转载地址:http://qyfsx.baihongyu.com/

你可能感兴趣的文章
keepalived之vrrp_script总结
查看>>
《MVC 系列》- 入门案例
查看>>
关于extjs中的加载grid数据出现遮罩层提示
查看>>
5、three.js光源
查看>>
培养年轻富豪的几大秘诀
查看>>
poj 2524 Ubiquitous Religions
查看>>
LAMP环境搭建
查看>>
分割视频文件或者是视频流
查看>>
精选9个值得学习的 HTML5 效果【附源码】
查看>>
查看Beyond Compare比较图片实际尺寸的方法
查看>>
Tomcat 安全配置与性能优化
查看>>
线性表顺序存储-练习题1
查看>>
jQuery中尺寸
查看>>
相信我!投资自己才是是最好的投资
查看>>
Linux下Mysql自启动
查看>>
Android Lifecycle组件 Proguard规则
查看>>
Python List数据的遍历
查看>>
spring3+hibernate4搭建
查看>>
编写GO的WEB开发框架 (十六): 增加自动的RESTful支持
查看>>
TypeError: environment can only contain strings
查看>>