一、if语句的结构

分为以下三种:单分支、双分支、多分支

单分支if语句
if CONDITION is True; then
分支
fi
双分支if语句
if CONDITION is True; then
分支
else
分支
fi
多分支if语句
if CONDITION is True; then
分支
elif CONDITION is True; then
分支2
...
else
分支n
fi

二、测试形式

分为以下两种:命令执行状态结果形式、条件表达式形式

1. 命令的执行状态结果,即命令执行成功与否:
if COMMAND &> /dev/null;then
#一定要注意此处的命令不带括号或单引号
2. 条件表达式

分为以下两种:命令形式和关键字形式

(1)命令形式(其本质同上1,表达式本身也不能应用于测试,下述的test和[]形式也是命令,类似.表示source命令)

(a) test EXPRESSION

if test EXPRESSION; then

(b) [ EXPRESSION ]

if [ EXPRESSION ]; then #一定要注意中括号前后有空格
(2) 关键字形式

(c) [[ EXPRESSION ]]

if [[ EXPRESSION ]]; then
#一般用于字符串测试,尤其是模式匹配测试

三、测试方法(测试种类)

分为以下三种:整数测试、字符串测试、文件测试

1、整数测试

-ge, -gt, -le, -lt, -eq, -ne

(其实也可以用>等来表示,只是得加双小括号)

2、字符串测试;

双目:>, <, ==, != , ~= (用于模式匹配)

单目:-z (真空,非空假),-n(非空真,空假)

3、文件测试

-e $file: 是否存在,存在则为真;

-a $file: 同上,弃用;

-f $file: 文件是否存在,且为普通文件;

-d $file: 是否存在,且为目录;

-h $file: 是否存在,且为符号链接文件;

-l $file: 同上;

-b $file: 是否存在,且为块设备文件;

-S $file: 是否存在,且为套接字文件;

-c $file: 是否存在,且为字符设备文件;

-p $file: 是否存在,且为管道文件;

-r $file: 当前用户是否对此文件拥有读权限;

-w $file: 当前用户是否对此文件拥有写权限;

-x $file: 当前用户是否对此文件拥有执行权限;

-u $file: 文件是否拥有suid权限;

-g $file: 文件是否拥有sgid权限;

-k $file: 文件是否拥有sticky权限;

-O $file: 当前用户是否为文件的属主;

-G $file: 当前用户是否属于文件的属组;

-N $file: 文件自从上一次被读取之后,是否被修改过;

$f1 -nt $f2:文件f1是否比文件f2新;

$f1 -ot $f2:文件f1是否比文件f2旧;

$f1 -ef $f2:文件f1和文件f2是否为同一个文件的硬链接;

上述所有文件测试条件都支持!取反。

bash脚本条件测试总结的更多相关文章

  1. bash脚本测试总结

    bash脚本测试总结   跟踪脚本的执行 可以让bash打印出你脚本执行的过程中的所有语句.这很简单,只需要使用bash的-x选项就可以做到,下面让我们来看一下.   下面的这段脚本,先是输出一个问候 ...

  2. Bash脚本编程学习笔记06:条件结构体

    简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...

  3. grep 查找bash脚本中的注释代码

    出于安全性的考虑,不建议在bash脚本中注释掉不使用的代码.也就是说如果某段代码不使用了,那么应该删除掉,而不是简单地注释掉.假如你突然意识到这一点,而以前并没有遵从这个原则,现在需要找出脚本中的注释 ...

  4. 【转】如何调试bash脚本

    本文转自:http://coolshell.cn/articles/1379.html Bash 是Linux操作系统的默认Shell脚本.Shell是用来处理操作系统和用户交互的一个程序.Shell ...

  5. 一个很不错的bash脚本编写教程

    转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...

  6. 玩转Bash脚本:test測试语句

    总第1篇test就是測试的意思,经常使用在流程控制语句中作为条件.以下做一下介绍. 关于真值 与其它语言不同,Bash(包含其它Shell)中,是用0表示真,非0表示假的.之所以用0表示成功,而不是1 ...

  7. bash脚本编程---循环

    bash为过程式编程语言 代码执行顺序: 1.顺序执行:逐条执行 2.选择执行:代码有一个分支,条件满足时才会执行                       两个或以上的分支,只会执行其中一个满足条 ...

  8. bash脚本的特性01

    1.bash特性之多命令执行 read -p "please enter a passwd for $name ,[passwd]: " password [ -z "$ ...

  9. Bash 脚本进阶,经典用法及其案例

    前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加 ...

随机推荐

  1. spring-mvc List及数组的配置接收

    数组接收 前台传递数组id 后台接收方式: public WebReturnObject deleteBatch(@RequestParam("id[]") String[] id ...

  2. JSP入门2

    1. CRUD是Create(创建).Read(读取).Update(更新)和Delete(删除)的缩写,一般应用有这四项也就足够了. 我们这里的例子是对联系人信息进行CRUD操作. 2. javab ...

  3. [USACO 3.3.1]骑马修栅栏t

    [USACO 3.3.1]骑马修栅栏 时间限制: 1 Sec  内存限制: 64 MB提交: 39  解决: 17[提交][状态][讨论版] 题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿 ...

  4. Java伪代码描述《大道至简》第一章

    第一节 Begin //原始需求 惩山北之塞,出入之迂 //项目沟通的基本方式 聚室而谋曰 //项目目标 毕力平险,指通豫南,达于汉阴 //技术方案 扣石垦壤,箕畚运于渤海之尾 //技术人员和工程管理 ...

  5. SpringMVC的一点理解

    1.MVC(Model-View-Controller) 用慕课网上的一个图来看看MVC Front Controller(前端控制器):把客户的请求分发给不同的控制器去生成业务数据,将生成的业务数据 ...

  6. Python s12 Day1 笔记及作业

    作业一: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 python3代码 : # -*- coding:utf-8 -*- input_name = input("Please ...

  7. List之Union(),Intersect(),Except() 即并集,交集,差集运算。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. 学习总结---SNAT和DNAT

    1.SNAT是结合源ip+源端口号变化的NAT功能. DNAT是将目的ip直接转换成私有的目的ip.(是否转换目的端口号?) 2.SNAT的应用场景:公司内部访问互联网时,使用公共的公网ip.从内到外 ...

  9. ASP.NET Core 处理 404 Not Found

    问题 在没有修改任何配置的情况下,这是用户使用 Chrome 访问不存在的URL时会看到的内容: 幸运的是,处理错误状态代码非常简单,我们将在下面介绍三种技术. 解决方案 在以前的ASP.NET MV ...

  10. 为UWP应用开启回环访问权限

    最近在项目中遇到UWP调用WCF的需求,考虑到UWP不能寄宿WCF服务(如果能,或者有类似技术,请告知),于是写了一个WPF程序寄宿WCF服务,然后再用UWP调用服务. 写的时候并没有碰到什么问题,直 ...