Test 有多种实现方式, [ 等价于 test, 并且 [ 是一个内建命令, 效率很高

另外, [[]] 也是测试, [[]]结构比bash[]更灵活, 这是一个扩展test命令, 从ksh88继承过来

注意: 在[[]]结构中, 将没有文件扩展或者是单词分离, 但是会放生参数扩展或命令替换.

例如:

file=/etc/passwd

if [[ –e $file ]]; then

echo “Password file exits.”

fi

(()), let 也可以返回状态值, 如果这个表达式的结果为非0, 那么返回的状态标记为0, 否则相反. 即表达式为真或大于0, 则返回状态值为0.

有关文件的测试

-e 文件存在

-f 是一个regular文件(不是目录或设备文件)

-s 文件长度不为 0

-d 是目录

-b 设备

-c 字符设备

-p 管道

-h 符号链接

-L 符号链接

-S socket

-t 关联到一个终端设备(这个选项一般用来检测是否在一个给定脚本中的stdin[-t0]或[-t1]一个终端)

-r 读权限

-w 写权限

-x 执行权限

-g 将组信息标记到某个文件或目录上 sgid

-u 将owner信息标记在某个文件或目录上 suid

-O 你是文件所有者

-G 文件的group跟你相同

-N 从文件最后被阅读到现在, 是否被修改过.

f1 –nt f2 文件 f1 比 f2 新

f1 –ot f2 文件 f1 比 f2 旧

f1 –ef f2 实体连接f1 f2

!取反

整数比较

-eq =

-ne !=

-gt >

-ge >=

-lt <

-le <=

< 需要使用双括号 ((“$a” < “$b”)), >, <=, >= 一样

字符串比较

=

==

一般情况下, 上边两种相同, 但是注意 == 在 [[]], [] 含义不同

[[ $a == z*]] # 如果$a 以 “z”开头(模式匹配)那么为true

[[]$a == “z*”] # 如果 $a 等于 z*(字符匹配), 那么结果为 true

!=

<  if [[“$a” < “$b”]],   if [ “$a” \< “$b” ] 注意, 在一个[] 时, < 需要被转义

-z 字符串为null, 就是长度为 0

-n 字符串不能为 null

混合比较

-a 逻辑与 在 [[&&]]

-o 逻辑或 在 [[||]]

最新文章

  1. 20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
  2. windows下在yii中使用mongodb
  3. HTML readyState 属性 iframe onreadystatechange事件
  4. Guava API
  5. TCP/IP笔记(二)TCP/IP简介
  6. Python之几种常用模块
  7. 重载Cocos2D生存期的方法
  8. css选择器应用
  9. Got permission denied while trying to connect to the Docker daemon socket at
  10. 带着新人学springboot的应用01(springboot+mybatis+缓存 上)
  11. mysql导入本地文件(作业)
  12. Django基于正则表达式匹配URL
  13. 题解-bzoj3901 棋盘游戏
  14. 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动
  15. CXF整合Sping与Web容器
  16. Linux 保护文件 不给修改
  17. Delphi XE 10 跨平台三层数据库应用教程
  18. Django之ContentType详解
  19. squeeze()
  20. HDU 1251 统计难题(字典树)

热门文章

  1. 说说PHP中的命名空间相关概念
  2. RHEL 7 基础配置
  3. conn
  4. SuperMap iServer 9D HBase使用
  5. window.open()的所有参数列表
  6. 微信公众平台消息接口开发-封装weixin.class.php(转)
  7. Linux环境源码编译安装SVN
  8. C#:ZedGraph画图控件(待补充)
  9. 摘:C/C++中时间类time.h
  10. Sql server注入简单认识