Shell test 命令

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


数值测试

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

实例演示:

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

输出结果:

两个数相等!

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

#!/bin/bash

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

结果为:

result 为: 11

字符串测试

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

实例演示:

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

输出结果:

两个字符串不相等!

文件测试

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

实例演示:

cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi

输出结果:

文件已存在!

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

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

输出结果:

至少有一个文件存在

最新文章

  1. Atitti.dw cc 2015 绿色版本安装总结
  2. nodejs API
  3. (原创)Python文件与文件系统系列(2)——os模块对文件、文件系统操作的支持
  4. SpringMvc入门三----控制器
  5. UVA 11384 Help is needed for Dexter(问题转化 递归)
  6. DBNull与Null
  7. 【Tools】maven安装
  8. java工程中使用freemarker例子
  9. jQuery和DOM对象之间的转换
  10. android集成apk对一些问题经常遇到系统
  11. ThinkPHP删除栏目(多)
  12. SQL Server索引误区使用建议
  13. 阿里八八β阶段Scrum(1/5)
  14. 对接口(interface)的思考
  15. ASP.NET MVC的ContentResult
  16. spring cloud 学习(10) - 利用springfox集成swagger
  17. Redis分布式锁实现秒杀业务(乐观锁、悲观锁)
  18. [Android]Recovery调用外部Shell脚本,Shell脚本使用ui_print方法
  19. JS组件系列——表格组件神器:bootstrap table 包含了js对象的定义和对象成员函数的定义
  20. 关于启动tomcatINFO警告错误问题解决

热门文章

  1. myeclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题
  2. 强制更新客户端Silverlight XAP 文件
  3. WebSocket Client连接AspNetCore SignalR Json Hub
  4. Java多线程与并发——进程与线程
  5. Java面向对象_包装类访问修饰符
  6. Storm概念学习系列之storm简介
  7. ASP.NET Core集成微信登录
  8. UICollectionView笔记2
  9. nginx fpm生产环境的权限设置
  10. asp.net 子域跨域 带cookie