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 #注意[]里面的空格,第一个命令为真打 ...
随机推荐
- JPA 原生态SQL 的复杂查询之createNamedQuery
JPA 原生态SQL 的复杂查询之createNamedQuery调用存储过程,返回的List字段对应的填充实体============实体类,调用存储过程====================== ...
- iPhone 微信平台链接到微信文章 返回上一页问题
东钿金融服务平台 有个隐藏按钮,点击此按钮,会弹出一个九宫格的功能栏,其中有个‘工作时间‘,这项,它是链接到微信公众号里面的一篇文章,按照平常写法就是 直接把文章链接地址 赋在a的href上,但是iP ...
- 修改IIS7中ASP的上传文件大小限制
最近在处理一个ASP的项目,用的全新的Windows Server 2008服务器. 今天客户反映图片文件上传不上去,设置服务器端文件夹权限之后文件可以上传了. 但是不久客户就反映有几个文件传不上去, ...
- 负载均衡SESSION同步总结
1.redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题 http://www.cnblogs.com/painsOnline/p/5194851.h ...
- nhibernate操作sql2008数据库(添加数据失败)
今天遇到一错误困了我一天,如此痛恨,遂记录于此: nhibernate框架+MVC模式搭的项目,添加数据时报错: "could not insert: [KXRMallManage.Mode ...
- C#利用SharpZipLib解压或压缩文件夹实例操作
最近要做一个项目涉及到C#中压缩与解压缩的问题的解决方法,大家分享. 这里主要解决文件夹包含文件夹的解压缩问题. )下载SharpZipLib.dll,在http://www.icsharpcode. ...
- Uva10474 - Where is the Marble?
两种解法: 1.计数排序 //计数排序 #include<cstdio> #include<iostream> #include<vector> #includ ...
- Myeclipse如何改变编码方式
Windows---->Preferences---->myeclipse Enterprise Workbench---->File and Editors----->JSP ...
- SetWindowsHookEx 相关
SetWindowsHookEx function https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85) ...
- ibatis 分页的简单实现
ibatis 物理分页的简单实现 cheungmine 2013-8-26 使用SSI (Struts2, Spring3, iBATIS2.3)框架开发Web服务的时候有一个需求就是对查询得到的结果 ...