Shell学习笔记 - 条件判断式
1. 判断格式
1) test 参数 文件
例: test -e /root/install.log
2) [ 参数 文件 ] -- 推荐使用
例: [ -e /root/install.log ]
注意:中括号后面和前面需要有空格
2. 判断文件类型参数
1)-d 文件:判断该文件是否存在,并且是否为目录文件
2)-e 文件:判断文件是否存在
3)-f 文件:判断文件是否存在,并且是否为普通文件
4)-s 文件:判断文件是否存在,并且是否为非空
5)其他文件类型判断:
-b 块设备文件;-c 字符设备文件;-L 符号链接文件; -p 管道文件;-S 套接字文件
示例:
[root@localhost ~]# [ -d /root ] && echo yes || echo no
yes
[root@localhost ~]# [ -e /root/install.log ] && echo yes || echo no
yes
[root@localhost ~]# [ -f /root/install.log ] && echo yes || echo no
yes
[root@localhost ~]# [ -s /root/install.log ] && echo yes || echo no
yes
3. 判断文件权限参数
1)-r 文件:判断该文件是否存在,并且是否有读权限
2)-w文件:判断该文件是否存在,并且是否有写权限
3)-x文件:判断该文件是否存在,并且是否有执行权限
4)其他文件权限判断:
-u SUID权限;-g SGID权限; -k SBit权限
示例:
[root@localhost ~]# [ -r /root/install.log ] && echo yes || echo no
yes
[root@localhost ~]# [ -w /root/install.log ] && echo yes || echo no
yes
[root@localhost ~]# [ -x /root/install.log ] && echo yes || echo no
no
4. 两个文件比较
1)文件1 -nt 文件2:判断文件1的修改时间是否比文件2的新
2)文件1 -ot 文件2:判断文件1的修改是否是否比文件2的旧
3)文件1 -ef 文件2:判断文件1是否和文件2的lnode号一致,可以理解为两个文件是否为同一个文件。这个判断用于判断硬链接是很好的方法。
示例:
[root@localhost ~]# [ /root/install.log -nt /root/install.log.syslog ] && echo yes || echo no
yes
[root@localhost ~]# [ /root/install.log -ot /root/install.log.syslog ] && echo yes || echo no
no
[root@localhost ~]# [ /root/install.log -ef /root/install.log.syslog ] && echo yes || echo no
no
5. 两个整数比较
1)整数1 -eq 整数2:判断是否相等
2)整数1 -ne 整数2:判断是否不相等
3)整数1 -gt 整数2:判断是否大于
4)整数1 -lt 整数2:判断是否小于
5)整数1 -ge 整数2:判断是否大于等于
6)整数1 -le 整数2:判断是否小于等于
注:在shell里,所有的变量都是字符类型,但是加了整数比较参数,两边的变量就会被认为是整数类型。
示例:
[root@localhost ~]# [ -eq ] && echo yes || echo no
yes
[root@localhost ~]# [ -ne ] && echo yes || echo no
no
[root@localhost ~]# [ -gt ] && echo yes || echo no
yes
[root@localhost ~]# [ -lt ] && echo yes || echo no
no
[root@localhost ~]# [ -ge ] && echo yes || echo no
yes
[root@localhost ~]# [ -le ] && echo yes || echo no
yes
6. 字符串判断
1)-z 字符串:判断字符串是否为空
2)-n 字符串:判断字符串是否非空
3)字符串1 == 字符串2:判断两个字符串是否相等
4)字符串1 != 字符串2:判断两个字符串是否不相等
示例:
[root@localhost ~]# str="abc"
[root@localhost ~]# [ -z $str ] && echo yes || echo no
no
[root@localhost ~]# [ -n $str ] && echo yes || echo no
yes
[root@localhost ~]# str2="efg"
[root@localhost ~]# [ "$str" == "$str2" ] && echo yes || echo no
no
[root@localhost ~]# [ "$str" != "$str2" ] && echo yes || echo no
yes
7. 多重条件判断
1)判断1 -a 判断2:表示逻辑与,相当于and
2)判断1 -o 判断2:表示逻辑或,相当于or
3)!判断:表示逻辑非,相当于not
示例:
[root@localhost ~]# [ -eq -a -eq ] && echo yes || echo no
no
[root@localhost ~]# [ -eq -o -eq ] && echo yes || echo no
yes
[root@localhost ~]# [ ! -eq ] && echo yes || echo no
yes
Shell学习笔记 - 条件判断式的更多相关文章
- Shell学习(六)——条件判断总结
Shell学习(六)--条件判断总结 [1]https://www.cnblogs.com/zhw-626/p/8528001.html [2]https://www.cnblogs.com/yizh ...
- Python学习笔记—条件判断和循环
条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- 第十三章、学习 Shell Scripts 条件判断式
利用 if .... then 单层.简单条件判断式 if [ 条件判断式 ]; then 当条件判断式成立时,可以进行的命令工作内容: fi <==将 if 反过来写,就成为 fi !结束 i ...
- 【重点】Shell入门教程:流程控制(3)条件判断式的真假值
之前曾提到,在Bash中什么是真什么是假,是以命令的结束状态是否为0来做判断.传回0,即为真:传回非0,即为假. 在Bash中,这种可以影响程序流程的式子,称为条件判断式.判断式的操作数分成“单元”及 ...
- 【转】shell学习笔记(四)——条件测试
1 test 条件检测 当我要检测系统上面某些文件或者是相关的属性时,利用 test 这个命令来工作真是好用得不得了, 举例来说,我要检查 /home/oracle/zy是否存在时,使用: test ...
- shell编程 条件判断式----利用 case ..... esac 判断
条件判断式----利用 case ..... esac 判断 case $变量名称 in <==关键词为 case ,还有变量前有钱字号 "第一个变量内容") &l ...
- shell编程 条件判断式----利用 if .... then ----多重
条件判断式----利用 if .... then ----多重 在同一个数据的判断中,如果该数据需要进行多种不同的判断时,应该怎么作?举例来说,上面的 sh06.sh 脚本中,我们只要进行一次 $yn ...
- 【shell】条件判断式
条件判断式的表示格式: 文件判断式: [root@andon ~]# [ -e /root/1 ] && echo yes || echo no #注意[]里面的空格,第一个命令为真打 ...
随机推荐
- 隐马尔可夫模型(HMM)
转自:http://blog.csdn.net/likelet/article/details/7056068 隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. ...
- 有关ListBox
如何拿到Source:从SQL,从XML file SQL:一个是ObjectDataProvider //用linq方法拿到SQL data,wrap到一个IEnumerable<Custom ...
- javac 命令
HelloWorld.java:1: 需要为 class.interface 或 enum 锘缝ublic class HelloWorld{ ^ 1 错误 这个错误出现的原因主要是在中文操作系统中, ...
- 六分钟学会创建Oracle表空间的步骤
经过长时间学习创建Oracle表空间,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西. 1.先查询空闲空间 select tablespace_name,file_id,blo ...
- 在ASP.NET MVC中使用MySQL【并使用membership】
大多数情况下我们使用.NET或ASP.NET(包括MVC)程序时,我们会同时选择SQL Server 或者SQL Express (其他微软产品)做数据库.但是今天使用MVC已经完全没 ...
- Objective-C运行时编程 - 实现自动化description方法的思路及代码示例
发布自米高 | Michael - 博客园,源地址:http://www.cnblogs.com/michaellfx/p/4232205.html,转载请注明. 本文结构 基础实现 性能优化 参考 ...
- UVa11205 The Broken Pedometer
// 题意:有P个LED灯,以及N个字符,要求选出个数最少的LED灯,使得即使只有这些灯正常工作,也能区分出这N个字符 // 题意抽象:输入两个整数P, N以及N行P列的01矩阵,找少的列,能区分所有 ...
- c# 轻量级ORM框架 之 WhereHelper (二)
上篇文章发布了一些设计orm框架基层的和实现,有朋友提出WhereHelper是亮点,能被认可我表示高兴. 我就把WhereHelper设计思想和代码公开下. WhereHelper 的概念就是再拼接 ...
- [转]iOS应用性能调优的25个建议和技巧
写在前面 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/ ...
- Java学习笔记之深入理解引用
引言:Java中数据传递的方式,除了基本数据类型是按照值传递,其它类型全部是按照引用传递,这和C++有很大区别,但是很多网上文章都解释的不清楚,甚至是错误的,在查阅资料之后,下面整理出一个比较容易理解 ...