版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/73330973

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

1. 数值

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

Example:

num1=100
num2=100
if test $[num1] -eq $[num2]
thenecho '两个数相等'
elseecho '两个数不相等'
fi
# 两个数相等

2. 字符串

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

Example:

str1="2016-11-21"
str2="2016-11-22"
if test ${str1} = ${str2}
thenecho '两个日期相同'
elseecho '两个日期不相同'
fi
# 两个日期不相同

备注

如果上面的使用方法中,字符串中有空格,则会报错:

str1="2016-11-22 12:34:21"
str2="2016-11-22 12:34:21"
if test ${str1} = ${str2}
thenecho '两个日期相同'
elseecho '两个日期不相同'
fi

输出:

两个日期不相同
/home/xiaosi/code/openDiary/BaseOperation/src/main/sh/sh_test.sh: 第 6 行: test: 参数太多

解决方案:

str1="2016-11-22 12:34:21"
str2="2016-11-22 12:34:21"
if test "${str1}" = "${str2}"
thenecho '两个日期相同'
elseecho '两个日期不相同'
fi

输出:

两个日期相同

3. 文件

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

Example:

if test -e /home/xiaosi/error.txt
thenecho '文件存在'
elseecho '文件不存在'
fi
# 文件存在
if test -r /home/xiaosi/error.txt
thenecho '文件可读'
elseecho '文件不可读'
fi
# 文件可读
if test -s /home/xiaosi/error.txt
thenecho '文件不为空'
elseecho '文件为空'
fi
# 文件为空
if test -d /home/xiaosi
thenecho '文件为目录'
elseecho '文件不为目录'
fi
# 文件为目录

4. 逻辑操作

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

Example:

str="2016-11-21"
if test "${str}" = "2016-11-21" -a -s /home/xiaosi/error.txt
thenecho '日期正确 并且 文件不为空'
elseecho '日期错误 或者 文件为空'
fi
# 日期错误 或者 文件为空

[Shell]test命令使用指南相关推荐

  1. 高级 Linux 命令精通指南

    原文出处 http://www.oracle.com/technetwork/cn/server-storage/linux/part1-093824-zhs.html Technorati 标签: ...

  2. Arthas watch 命令使用指南

    作者 | Agentd Arthas watch 命令使用指南 Arthas 是我很喜欢的一款 Java 领域的开发调试工具. 每次测试遇到问题的时候,当别人为了加一条日志而重发代码,我都会欣慰地拿出 ...

  3. Linux文件命令精通指南(三)(转)

    Linux文件命令精通指南(三)(转) 查看和查找文件 文件过滤器 用来读取文件内容和在文件内容上执行操作的命令有时被称为 1y滤器.sed 和 awk 命令是两个滤波器的例子,因为在以前的 OTN ...

  4. Python快速实现 CMD 命令调用指南

    Python快速实现 CMD 命令调用指南 在 Python 中,我们可以很方便地通过调用 CMD 命令来执行系统操作.本文将为您介绍如何使用 Python 调用 CMD 命令,并提供相关代码和详细描 ...

  5. Linux文件命令精通指南(二)(转)

    Linux文件命令精通指南(二)(转) 文件处理命令 剖析一个文件列表 ls 命令用来查看用户有执行权限的任意目录中的文件列表,该命令有许多有趣的选项.例如: $ ls -liah * 22684 - ...

  6. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...

  7. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  8. Shell test命令(Shell [])详解,附带所有选项及说明

    test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方 ...

  9. Shell+Linux命令实现日志分析

    这篇文章主要介绍了Shell+Linux命令实现日志分析,本文给出了结合grep命令.awk命令等实现了几个常用的日志分析统计长命令,需要的朋友可以参考下 一.列出当天访问次数最多的IP 命令: 复制 ...

  10. 【Linux】1.shell各个命令

    shell各个命令 1.符号参数 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.如"$*"用「"」括起来的情况.以"$1 $2 - ...

最新文章

  1. Python 读取 YUV(NV12) 视频文件-优化
  2. 2、HTML <img>标签(插入图片)
  3. P678-vect2.cpp
  4. SpringMVC的Controller
  5. 现在学Java有前途吗?Java岗位饱和了吗?
  6. c++中怎么数组内有用元素的个数_前端面试(算法篇) - 数组乱序
  7. Toad for Oracle 导入MIP.dmp文件时:报内存不足时的解决办法:
  8. mysql 5.5 主从同步问题_MySQL 5.5 主从复制异步、半同步以及注意事项详解
  9. mysql 5.0.37.tar.gz_Linux下MySQL5.0.37安装配置步骤
  10. hibernate注释映射_Hibernate一对多映射示例注释
  11. shell中的getopt与getopts
  12. python求解LeetCode习题Sort Colors
  13. 随机抽样方法——DataFrame.sample()
  14. 中文文本分析(matplotlib的库的应用)
  15. 电力电子与电力传动类毕业论文文献包含哪些?
  16. CI环境搭建-创建git
  17. 用dom4j实现对象和xml文件的互相转换
  18. 【中科院】分子生物学-朱玉贤第四版-笔记-第13讲 原核生物表达调控
  19. 基于Django的水果线上销售平台
  20. SpringBoot - ApplicationRunner的作用是什么?

热门文章

  1. Foreach In(C#)
  2. TED如何和压力做朋友(第二天)
  3. .NET简谈互操作(三:基础知识之DllImport特性)
  4. 【生活相关】二(2014年新年畅想)
  5. EXCEL 连接符的使用
  6. ThinkPHP5捕获致命错误流程
  7. 倒计时 5 天!Apache Flink Meetup · 北京站,1.13 新版本 x 互娱实践分享的开发者盛筵!...
  8. Android内存泄漏分析心得
  9. 还想呆在公司养老?别做梦了
  10. 有技术,没在怕,就是干!