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 逻辑或 在 [[||]]

07 Test结构的更多相关文章

  1. java基础07 循环结构

    public class While02 { public static void main(String[] args) { /** * while(循环条件){ * 循环体(循环操作) * } * ...

  2. 【VBA编程】07.循环结构语句

    [FOR...NEXT语句] For counter = start To End [Step step] [statements] [Exit For] [statements] Next [cou ...

  3. 第一阶段·Linux运维基础-第2章·Linux系统目录结构介绍

    01 变量与PS1 02 添加用户 03 关闭SELinux 04 关闭iptables 05 显示中文乱码排查过程 06 总结 07 目录结构课程内容 08 Linux目录结构特点 09 Linux ...

  4. 20160127.CCPP体系详解(0006天)

    程序片段(01):msg.c 内容概要:线程概念 #include <stdio.h> #include <stdlib.h> #include <Windows.h&g ...

  5. JavaSE_ Java基础 总目录(1~6)

    JavaSE学习总结第01天_Java概述01.01 计算机概述01.02 计算机硬件和软件概述01.03 软件开发和计算机语言概述01.04 人机交互01.05 键盘功能键和快捷键01.06 如何打 ...

  6. JavaSE学习总结第04天_Java基础语法3

      04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) {    case 值1:语句体1;break;    case 值2:语句体2;break; ...

  7. 公布一个基于 Reactor 模式的 C++ 网络库

    公布一个基于 Reactor 模式的 C++ 网络库 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 2010 Aug 30 本文主要介绍 muduo 网 ...

  8. Sphinx学习笔记2

    因为网站搜索的需要,启动了一个搜索引擎项目,其实也算不上完整的搜索引擎,需求很简单,如下:     1)搜索产品名.类别名.品牌名.副标题.关键字等字段     2)数据量目前为13000左右,未来可 ...

  9. 20160224.CCPP体系详解(0034天)

    程序片段(01):指针与结构体.c 内容概要:指针与结构体 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include < ...

随机推荐

  1. (剑指Offer)面试题11:数值的整数次方

    题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 看题目似乎很简单,循环相乘不就行了吗?不是的. 需要考虑几个问题: 1. ...

  2. minigui杂项

    官方下载地址 MiniGUI简介 http://www.minigui.com/zhcn/download/ MiniGUI3.0.12 移植到mini2440 在海思hi3520上移植minigui ...

  3. VC中关于预编译头文件的概括,以及无法打开预编译头文件的错误解决

    1.预编译头文件 在VC中编译器一般都是以文件为单位进行编译,如果修改了工程中的一个文件,那么将导致所有文件都要从新编译,这样的编译将耗费很长时间.为了提高编译速度,将那些不常被修改,比较稳定,文件单 ...

  4. EF增删改查的优化

    在EF的上一篇博客中已经对它的增删改查有了一个简单的了解.当中的改动过程是先要把要改动的内容查出来然后再进行改动.保存.它详细的过程是这种 首先当在运行查询语句的时候"EF数据上下文&quo ...

  5. IOS8 Playground介绍

    一.Playground介绍 Playground是Xcode6中自带的Swift代码开发环境.俗话说"功欲善其事,必先利其器".曾经在Xcode5中编写脚本代码,比如编写JS,其 ...

  6. Linux中setup命令command not found如何解决?

    1.安装setuptool    yum -y install setuptool 2.系统服务管理  yum -y install ntsysv 3.setup中配套的防火墙设置也得装上去,不然会出 ...

  7. Tp框架中模板中if条件如何使用?

  8. 用sql语句查出和sql相关的性能计数器

    一台服务器上,用性能监视器死活显示不出来一部分计数器,没办法,用sql语句查了 --所有和sql相关的计数器 select * from sys.dm_os_performance_counters ...

  9. 安卓平台ARM Mali OpenCL例子-灰度转换(转)

    手头一块RK3288的板子,在板子上测试了一张1080p的彩色图灰度转换的OpenCL例子.OpenCL没有任何优化.例子请移步这里. 该例子是编译成安卓平台下的可执行程序. 进入jni文件夹,进行如 ...

  10. Ubuntu中类似任务管理器的东西?

    Ubuntu里面有没有类似windows中任务管理器的东西呢?怎么打开?谢谢!!!   ================================ 检举| 2009-02-01 16:50提问者 ...