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 Framework 5.0 新特性
Spring Framework 5.0是在Spring Framework 4.0之后将近四年内一次重大的升级. 在这个时间框架内,主要的发展之一就是Spring Boot项目的演变. Spring ...
- CentOS 7搭建LAMP环境(一)
CentOS是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成.由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentO ...
- 【POJ】1704 Georgia and Bob(Staircase Nim)
Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, ...
- NOIP2017SummerTraining0713
个人感受:这套题是真的难,以至于,拿了130分就第三了(说来羞耻,真的不想---) 问题 A: 乐曲创作 时间限制: 1 Sec 内存限制: 256 MB提交: 370 解决: 58[提交][状态 ...
- Stochastic Gradient Descent
一.从Multinomial Logistic模型说起 1.Multinomial Logistic 令为维输入向量; 为输出label;(一共k类); 为模型参数向量: Multinomial Lo ...
- python --- socket模块详解
socket常用功能函数: socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) ...
- binary
模块说明 函数经过优化,比等价Erlang实现(比如位语法)更快,更节省内存 大部分可用位语法等价实现 模块的实现根据EEP(Erlang Enhancement Proposal)31 模块只处理面 ...
- mysq参数sql_safe_updates限制范围
在mysql运维中出现过不少因为update/delete条件错误导致数据被误更新或者删除的case,为避免类似问题的发生,可以用sql_safe_updates参数来对update/delete做限 ...
- Echarts图表统计学习
史上最全的Echarts图表学习文档 http://echarts.baidu.com/doc/doc.html 勤加练习,多做总结! http://www.stepday.com/topic/?79 ...
- 动态IP解析
本文介绍两种方便获取主机动态IP的方式(DDNS,IP报告网页),并给出相应的代码实现. shell脚本获取本机IP,执行上传操作和更新DNS操作.定期执行通过crontab或者systemd等服务. ...