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 #注意[]里面的空格,第一个命令为真打 ...
随机推荐
- 解决CSS各种IE各种兼容问题(Google解决方案)
google的 ie7 – js中是一个JavaScript库(解决IE与W3C标准的冲突的JS库),使微软的Internet Explorer的行为像一个Web标准兼容的浏览器,支持更多的W3C标准 ...
- Generic【Pluralsight】
prepare Employee Structure namespace CollectIt { public class Employee { public string Name { get; s ...
- Linux 下安装android
主要参考了这篇文章 http://segmentfault.com/a/1190000003069062#articleHeader2 这里提到了“unable to run mksdcard sdk ...
- input标签写CSS时需要注意的几点(先收藏)
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-05-05) 飞鱼的声纳顶部的搜索框让我头疼了很长时间,原因是总不能获得跨浏览器的统一样式.主要的问题有这么两个:一是inpu ...
- C++的优秀特性3:构造函数和析构函数
(转载请注明原创于潘多拉盒子) 构造函数和析构函数是C++中再熟悉不过的概念了,几乎每个了解一点C++的人都知道这两个概念是什么意思.一个对象的全部生命期中构造函数和析构函数执行的时机如下: 1. 为 ...
- Android Volley框架的使用(二)
此博文源码下载地址 https://github.com/Javen205/VolleyDemo.git 使用请求队列RequestQueue Volley中的Request都需要添加到Reque ...
- Codeforces Round #342 (Div. 2) C. K-special Tables 构造
C. K-special Tables 题目连接: http://www.codeforces.com/contest/625/problem/C Description People do many ...
- Looksery Cup 2015 H. Degenerate Matrix 数学
H. Degenerate Matrix Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/549/ ...
- cdoj 93 King's Sanctuary 傻逼几何题
King's Sanctuary Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/sho ...
- C#中的ICollection接口
一.集合类: 1.1 ICollection接口 前面我们学习了数组,这是.net Framework定义的最基本的集合类型,除过数组外,.net Framework还另外定义了很多集合类型以满足编程 ...