Shell学习之条件测试(四)
Shell学习之条件测试
目录
逻辑测试
文件测试
数值比较
字符串比较
逻辑测试
格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和-o放在[]里面用,&&和||放在[]外面用 ) -a 或 && 逻辑与 -o 或 || 逻辑或 ! 逻辑否
文件测试
文件测试 格式1: [ 操作符 文件或目录 ] 格式2:test 操作符 文件或目录 常用的测试操作符 -d :测试是否为目录( Directory ) -e :测试目录或文件是否存在(Exist) -f :测试是否为文件(File) -r :测试当前用户是否可读(read) -w:测试当前用户是否可写(write) -x :测试当前用户是否可执行(excute)
例子:备份Mysql数据库,业务代码没有完善
#/bin/bash
back_dir=/var/mysql_back if !test -d $back_dir;then
mkdir -p $back_dir
fi
echo "开始备份"
数值比较
格式1:[ 整数1 操作符 整数2 ] 格式2: test 整数1 操作符 整数2 常用的测试操作符 -eq : 等于 (Equal) -ne : 不等于 (Not Equal) -gt : 大于(Greater Than) -lt : 小于 (Lesser Than) -le : 小于或等于(Lesser or Equal) -ge : 大于或等于(Greater or Equal)
例子
#/bin/bash
if [ $UID -ne 0];then
echo "没有权限"
exit
fi
yum -y install httpd
字符串比较
格式1:[ 字符串1 = 字符串2 ] [ 字符串1 != 字符串2 ] 格式2:[ -z 字符串 ] 常用的测试操作符 = : 字符串内容相同 != : 字符串内容不同 -z : 字符串内容为空
例子
#/bin/bash
if [ $USER = "root"];then
yum -y install httpd
fi
echo "没有权限"
exit
所有表达式
( EXPRESSION )
EXPRESSION is true ! EXPRESSION
EXPRESSION is false EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true EXPRESSION1 -o EXPRESSION2
either EXPRESSION1 or EXPRESSION2 is true -n STRING
the length of STRING is nonzero STRING equivalent to -n STRING -z STRING
the length of STRING is zero STRING1 = STRING2
the strings are equal STRING1 != STRING2
the strings are not equal INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2 INTEGER1 -ge INTEGER2
INTEGER1 is greater than or equal to INTEGER2 INTEGER1 -gt INTEGER2
INTEGER1 is greater than INTEGER2 INTEGER1 -le INTEGER2
INTEGER1 is less than or equal to INTEGER2 INTEGER1 -lt INTEGER2
INTEGER1 is less than INTEGER2 INTEGER1 -ne INTEGER2
INTEGER1 is not equal to INTEGER2 FILE1 -ef FILE2
FILE1 and FILE2 have the same device and inode numbers FILE1 -nt FILE2
FILE1 is newer (modification date) than FILE2 FILE1 -ot FILE2
FILE1 is older than FILE2 -b FILE
FILE exists and is block special -c FILE
FILE exists and is character special -d FILE
FILE exists and is a directory -e FILE
FILE exists -f FILE
FILE exists and is a regular file -g FILE
FILE exists and is set-group-ID -G FILE
FILE exists and is owned by the effective group ID -h FILE
FILE exists and is a symbolic link (same as -L) -k FILE
FILE exists and has its sticky bit set -L FILE
FILE exists and is a symbolic link (same as -h) -O FILE
FILE exists and is owned by the effective user ID -p FILE
FILE exists and is a named pipe -r FILE
FILE exists and read permission is granted -s FILE
FILE exists and has a size greater than zero -S FILE
FILE exists and is a socket -t FD file descriptor FD is opened on a terminal -u FILE
FILE exists and its set-user-ID bit is set -w FILE
FILE exists and write permission is granted -x FILE
FILE exists and execute (or search) permission is granted
Shell学习之条件测试(四)的更多相关文章
- Shell学习(六)——条件判断总结
Shell学习(六)--条件判断总结 [1]https://www.cnblogs.com/zhw-626/p/8528001.html [2]https://www.cnblogs.com/yizh ...
- Shell脚本的条件测试与比较
Shell脚本的条件测试与比较 一.shell脚本的条件测试 通常,在bash的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结构执行不同的操作,有时也会与if等条件语句相结合,来完成测试 ...
- shell脚本之六:shell脚本的条件测试与比较
六.shell脚本的条件测试与比较 (一)条件表达式的常见语法 1.条件表达式6种写法(if,while) 语法1:test<测试表达式> 语法2:[ <测试表达式>] #中括 ...
- shell编程:条件测试与比较(六)
条件测试方法综述 test条件测试的简单语法及测试 范例6-1 测试文件(在test命令中使用-f选项:文件存在且为不同文件则表达式成立) [root@adminset ~]# test -f fil ...
- Shell脚本下条件测试(eq.ne.....)(转载)
转载:http://cxj632840815.blog.51cto.com/3511863/1168709 Shell编程中的条件测试 在Linux编程中经常会用到判断数值的大小,字符串是否为空这样或 ...
- Shell中的条件测试和循环语句
1.条件测试:test或[ 如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为0 运行结果: 带与.或.非的测试命令[ ! EXPR ] : E ...
- SHELL编程之条件测试
条件测试 (一)概念:对特定的条件进行判断,以决定如何执行操作,当条件成立时,测试语句的返回值为0,否则为其他数值,意思就是如果 echo $? 的值是0,那么条件成立.条件测试的分类:文件测试.整数 ...
- Shell学习笔记 - 条件判断式
1. 判断格式 1) test 参数 文件 例: test -e /root/install.log 2) [ 参数 文件 ] -- 推荐使用 例: [ -e /root/install.log ] ...
- linux shell 学习笔记--文件测试符
. 文件测试操作 ---------------- 返回true 如果... -e 文件存在 -a 文件存在 这个选项的效果与-e 相同.但是它已经被弃用了,并且不鼓励使用 -f file 是一个re ...
随机推荐
- SQL Server 数据恢复到指点时间点(完整恢复)
SQL Server 数据恢复到指点时间点(完整恢复) 高文龙关注2人评论944人阅读2017-03-20 12:57:12 SQL Server 数据恢复到指点时间点(完整恢复) 说到数据库恢复,其 ...
- Confluence 6 升级自定义的站点和空间布局
随着 Confluence 的演变.默认的站点和空间布局也会随着 Confluence 升级而让使用的所有页面进行改变.随着一些新功能的加入和一些老功能的修改,默认的布局也需要进行修改来支持这些改变. ...
- mvc 模式和mtc 模式的区别
首先说说Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数据库的映射( ...
- spring boot 配置文件
spring boot使用一个全局配置文件:主要是以下两种类型 application.properties :例:server.port=9998 application.yml(YAML) : ...
- LeetCode(123):买卖股票的最佳时机 III
Hard! 题目描述: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意: 你不能同时参与多笔交易(你必 ...
- LeetCode(115):不同的子序列
Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字 ...
- 【kafka】设置指定topic和group_id消耗的offset
该博文方法有问题,正确方案在http://www.cnblogs.com/dplearning/p/7992994.html 背景: 搭建了一个kafka集群,建立了topic test,用group ...
- 【linux】环境变量配置
假设要添加环境变量 JAVA_HOME 1.先用自己的个人账号 vim /etc/profile 在文件末尾添加 export JAVA_HOME=/usr/java/jdk1..0_144 2. s ...
- python之路第二天
为何要有操作系统 为了让程序员更轻松的完成命令电脑工作而存在的,控制硬件,服务于软件. 操作系统的位置 操作系统位于软件和硬件之间.操作系统由内核(运行于内核态,控制硬件)和系统调用(运行于用户态,为 ...
- bzoj 2427
非常好的一道题,可以说是树形dp的一道基础题 首先不难发现,:如果我们把有关系的两个点用有向边相连,那么就会形成一个接近树的结构.如果这是一棵完美的树,我们就可以直接在树上打背包了 但是这并不是一棵完 ...