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 #注意[]里面的空格,第一个命令为真打 ...
随机推荐
- 实现jsp网站添加到收藏夹
var ctrl = (navigator.userAgent.toLowerCase()).indexOf('mac') != -1 ? 'Command/Cmd': 'CTRL'; ...
- AFNetWorking3.0使用 自签名证书的https请求
前几日,项目组出于安全角度的考虑,要求项目中的请求使用https请求,因为是企业内部使用的app,因此使用了自签名的证书,而自签名的证书是不受信任的,所以我们就需要自己来做证书的验证,包括服务器验证客 ...
- java使用org.apache.poi读取与保存EXCEL文件
一.读EXCEL文件 package com.ruijie.wis.cloud.utils; import java.io.FileInputStream; import java.io.FileNo ...
- 结构类模式(二):桥接(Bridge)
定义 将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化. 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维 ...
- java懒汉式单例遇到多线程
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例.这些应用都或多或少具有资源管理器的功 ...
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写, ...
- Java带包编译运行
package cn.togeek.job; public class Test { public static void main(String[] args) throws Exception { ...
- 解决从内部存储设备安装apk提示Permission Denied
做应用商店,下载apk,考虑一种情况,如果没有sd卡的情况下就将apk下载到 Internal Cache目录下. 下载都正常,但是在安装的时候提示Permission Denied /data/da ...
- embed 隐藏播放器显示
昨天在页面做音频播放的时候,客户要求仅仅有声音.不显示播放器. 百度搜到解决方法: <embed id="embed_sound_id" src="test.mp3 ...
- 【HTML】Jquery前台传参及接收
在一些网页应用中,有的时候需要前台之间传递参数,通过JS语法来做一些判断处理. 发送端:(a页面) <a href="b.html?Show=true" id="t ...