bash脚本条件测试总结
一、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脚本条件测试总结的更多相关文章
- bash脚本测试总结
bash脚本测试总结 跟踪脚本的执行 可以让bash打印出你脚本执行的过程中的所有语句.这很简单,只需要使用bash的-x选项就可以做到,下面让我们来看一下. 下面的这段脚本,先是输出一个问候 ...
- Bash脚本编程学习笔记06:条件结构体
简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...
- grep 查找bash脚本中的注释代码
出于安全性的考虑,不建议在bash脚本中注释掉不使用的代码.也就是说如果某段代码不使用了,那么应该删除掉,而不是简单地注释掉.假如你突然意识到这一点,而以前并没有遵从这个原则,现在需要找出脚本中的注释 ...
- 【转】如何调试bash脚本
本文转自:http://coolshell.cn/articles/1379.html Bash 是Linux操作系统的默认Shell脚本.Shell是用来处理操作系统和用户交互的一个程序.Shell ...
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
- 玩转Bash脚本:test測试语句
总第1篇test就是測试的意思,经常使用在流程控制语句中作为条件.以下做一下介绍. 关于真值 与其它语言不同,Bash(包含其它Shell)中,是用0表示真,非0表示假的.之所以用0表示成功,而不是1 ...
- bash脚本编程---循环
bash为过程式编程语言 代码执行顺序: 1.顺序执行:逐条执行 2.选择执行:代码有一个分支,条件满足时才会执行 两个或以上的分支,只会执行其中一个满足条 ...
- bash脚本的特性01
1.bash特性之多命令执行 read -p "please enter a passwd for $name ,[passwd]: " password [ -z "$ ...
- Bash 脚本进阶,经典用法及其案例
前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加 ...
随机推荐
- spring-mvc List及数组的配置接收
数组接收 前台传递数组id 后台接收方式: public WebReturnObject deleteBatch(@RequestParam("id[]") String[] id ...
- JSP入门2
1. CRUD是Create(创建).Read(读取).Update(更新)和Delete(删除)的缩写,一般应用有这四项也就足够了. 我们这里的例子是对联系人信息进行CRUD操作. 2. javab ...
- [USACO 3.3.1]骑马修栅栏t
[USACO 3.3.1]骑马修栅栏 时间限制: 1 Sec 内存限制: 64 MB提交: 39 解决: 17[提交][状态][讨论版] 题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿 ...
- Java伪代码描述《大道至简》第一章
第一节 Begin //原始需求 惩山北之塞,出入之迂 //项目沟通的基本方式 聚室而谋曰 //项目目标 毕力平险,指通豫南,达于汉阴 //技术方案 扣石垦壤,箕畚运于渤海之尾 //技术人员和工程管理 ...
- SpringMVC的一点理解
1.MVC(Model-View-Controller) 用慕课网上的一个图来看看MVC Front Controller(前端控制器):把客户的请求分发给不同的控制器去生成业务数据,将生成的业务数据 ...
- Python s12 Day1 笔记及作业
作业一: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 python3代码 : # -*- coding:utf-8 -*- input_name = input("Please ...
- List之Union(),Intersect(),Except() 即并集,交集,差集运算。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 学习总结---SNAT和DNAT
1.SNAT是结合源ip+源端口号变化的NAT功能. DNAT是将目的ip直接转换成私有的目的ip.(是否转换目的端口号?) 2.SNAT的应用场景:公司内部访问互联网时,使用公共的公网ip.从内到外 ...
- ASP.NET Core 处理 404 Not Found
问题 在没有修改任何配置的情况下,这是用户使用 Chrome 访问不存在的URL时会看到的内容: 幸运的是,处理错误状态代码非常简单,我们将在下面介绍三种技术. 解决方案 在以前的ASP.NET MV ...
- 为UWP应用开启回环访问权限
最近在项目中遇到UWP调用WCF的需求,考虑到UWP不能寄宿WCF服务(如果能,或者有类似技术,请告知),于是写了一个WPF程序寄宿WCF服务,然后再用UWP调用服务. 写的时候并没有碰到什么问题,直 ...