07 Test结构
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结构的更多相关文章
- java基础07 循环结构
public class While02 { public static void main(String[] args) { /** * while(循环条件){ * 循环体(循环操作) * } * ...
- 【VBA编程】07.循环结构语句
[FOR...NEXT语句] For counter = start To End [Step step] [statements] [Exit For] [statements] Next [cou ...
- 第一阶段·Linux运维基础-第2章·Linux系统目录结构介绍
01 变量与PS1 02 添加用户 03 关闭SELinux 04 关闭iptables 05 显示中文乱码排查过程 06 总结 07 目录结构课程内容 08 Linux目录结构特点 09 Linux ...
- 20160127.CCPP体系详解(0006天)
程序片段(01):msg.c 内容概要:线程概念 #include <stdio.h> #include <stdlib.h> #include <Windows.h&g ...
- JavaSE_ Java基础 总目录(1~6)
JavaSE学习总结第01天_Java概述01.01 计算机概述01.02 计算机硬件和软件概述01.03 软件开发和计算机语言概述01.04 人机交互01.05 键盘功能键和快捷键01.06 如何打 ...
- JavaSE学习总结第04天_Java基础语法3
04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) { case 值1:语句体1;break; case 值2:语句体2;break; ...
- 公布一个基于 Reactor 模式的 C++ 网络库
公布一个基于 Reactor 模式的 C++ 网络库 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 2010 Aug 30 本文主要介绍 muduo 网 ...
- Sphinx学习笔记2
因为网站搜索的需要,启动了一个搜索引擎项目,其实也算不上完整的搜索引擎,需求很简单,如下: 1)搜索产品名.类别名.品牌名.副标题.关键字等字段 2)数据量目前为13000左右,未来可 ...
- 20160224.CCPP体系详解(0034天)
程序片段(01):指针与结构体.c 内容概要:指针与结构体 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include < ...
随机推荐
- jQuery animate方法开发极客标签Logo动画融合效果
在线演示 本地下载 jQuery的animate方法基础使用,演示如何生成一个jQuery animate方法开发极客标签Logo动画融合效果 相关代码录播:jQuery animate方法开发极客标 ...
- eclipse中android开发怎么修改xml文件字体大小
windows->preference->General->appearence->Colors and Font->Basic->Text Font.点击右侧的E ...
- 修复错误配置/etc/fstab文件导致系统无法正常启动
1.文件介绍 /etc/fstab这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作.作为系统配置文件,fstab通常都位于/etc目录下,它包括了所有分 ...
- SCU 4313 把一棵树切成每段K个点 (n%k)剩下的点不管
题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4313 判断是不是存在拆图得到新连通分支的点个数是K的倍数 注意一个点所连的边只能被切一条 # ...
- 解决NSUserDefault 偶尔保存数据无效
一:情景 解决NSUserDefault 偶尔保存数据无效 今天用NSUserDefault保存一些少量的数据,但是发现 setObject时,有时成功!有时就是不成功! 二:解决方法 [[NSUse ...
- 算法笔记_028:字符串转换成整数(Java)
1 问题描述 输入一个由数字组成的字符串,请把它转换成整数并输出.例如,输入字符串“123”,输出整数123. 请写出一个函数实现该功能,不能使用库函数. 2 解决方案 解答本问题的基本思路:从左至右 ...
- 无源码情况下直接修改jar里内容思路
当我们反编译的jar包里class被混淆过,这时反编译出来的java文件会有各种奇葩的问题,不能直接用,比如某框架需要注册码,这个时候我们只能通过层层反编译将验证码相关的部分绕过,如果这个代码不是那么 ...
- Session 简单购物车
package session.test; import java.io.IOException; import java.io.PrintWriter; import java.util.Linke ...
- Android开发之语音识别
2013-07-03 语音识别 2008年Google语音搜索在iphone平台上线,Android 1.5 将语音识别应用到搜索功能上. 手动输入是目前主要与手机互动的方式,语音搜索宗旨是最大限度地 ...
- JAVA变量的执行顺序
对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: package ...