一、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. 教育,创新,提升:Indiegogo和Kickstarter上受中国用户支持的10个众筹项目

    中国的经济正在迅速发展,已成为世界第二大经济体.中国家庭随着经济水平的提高,越来越多父母愿意将自己的子女送到海外留学. 家长们希望自己的子女可以有机会接受国外大学优质的教育, 以便他们将来可以学成归来 ...

  2. 模糊搜索神器fzf

    前言 fzf是目前最快的fuzzy finder.使用golang编写.结合其他工具(比如ag和fasd)可以完成非常多的工作. 让你通过输入模糊的关键词就可以定位文件或文件夹.当你的思维也习惯了模糊 ...

  3. JavaScript案例开发之扑克游戏

    随着时代的发展,知识也在日益更新,但是基础知识永远不会过时,它是新时代的基石,更是我们进一步学习的保障,下面带着大家用JavaScript开发一款真正的扑克游戏,和大家一起分享,希望你们能够喜欢:闲话 ...

  4. MyEclipse的JQuery.min.js报错红叉解决办法

    MyEclipse的JQuery.min.js报错红叉解决办法 1.选中报错的jquery文件"jquery-1.2.6.min.js".2.右键选择 MyEclipse--> ...

  5. vue2购物车ch2-(商品列表显示)

    1 index.html <!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...

  6. RESTful API 架构解读

    RESTful API 架构解读 首先我们还是先介绍下 RESTful api 的来龙去脉. 首先, RESTful (下文都简称 RESTful api 为 RESTful ) 1.RESTful ...

  7. WebApi实现验证授权Token,WebApi生成文档等

    using System; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Security; ...

  8. Excel导出插件

    前言 一个游戏通常需要10多个Excel表格或者更多来配置,一般会通过导出csv格式读取配置. 本文提供导出Excel直接生成c#文件,对应数据直接生成结构体和数组,方便开发排错和简化重复写每个表格的 ...

  9. windowsxp_电脑桌面显示不出来。

    问题:在工作的时候遇到电脑桌面显示不出来 解决方案: 1.结束explorer.exe进程 2.新建一个explorer.exe进程

  10. 使用docker 解决一个小问题,你也可能用的到

    以前一直觉得docker是运维用的工具,或者devops 用的工具,一般人应该用不上,直到最近发现docker 还有另外一个妙用,不管是什么语言. 这几天开会网络特别不好,nodejs npm 仓库 ...