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 ...
随机推荐
- Confluence 6 管理协同编辑 - 修改编辑模式
编辑模式确定了你站点所有用户使用协同编辑的体验,这个是你对协同编辑进行启用和关闭的地方. 希望修改编辑模式: 进入 > 基本配置(General Configuration) > 协同编 ...
- java对之前的复习
日期:2018.7.29 星期日 博客期:003 我知道我实在是不想写博客,因为要做很多的准备啊!因为还要准备靠驾驶本,所以两边都要学!要不这次来总结总结驾驶员知识?还是算了吧!今天来总结一下学到的J ...
- 微信浏览器发送ajax请求执行多次解决方法
http://www.cnblogs.com/whatlonelytear/p/8934738.html
- 谷歌、火狐浏览器 缩放为80% 时,margin值才正确
声明:小白的笔记,欢迎大神指点.联系QQ:1522025433. 在网页布局中,通过 谷歌浏览器或火狐浏览器 预览时,发现我们定义的盒模型width,height,margin,padding 值都是 ...
- Linux/Unix/Mac OS下的远程访问和文件共享方式
scp -P 20022 src.tar.gz zhouhh@192.168.12.13:/home/zhouhhscp -P 20022 zhouhh@192.168.12.13:/home/zho ...
- Selenium CSS定位语法
大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css的定位 ...
- Fisher–Yates shuffle 算法
费希尔 - 耶茨洗牌 维基百科,自由的百科全书 所述费-耶茨洗牌是一种算法,用于产生随机排列的有限的序列 -in平原而言,算法打乱的序列.该算法有效地将所有元素放在帽子里; 它通过随机从帽子中 ...
- C#正则Groups高级使用方法
正则表达式号称开发者得瑞士军刀,使用好正则表达式尤其重要. 拆分多个正则: public static string[] SplitByManyRegex(string text, string[] ...
- yarn的安装与使用及与npm对应的命令
在Nodejs环境下,通过npm install -g yarn 命令进行全局安装 例如:yarn versionyarn inityarn installyarn add vueyarn add v ...
- 一脸懵逼学习Hdfs---动态增加节点和副本数量管理(Hdfs动态扩容)
1:按照上篇博客写的,将各个进程都启动起来: 集群规划: 主机名 IP 安装的软件 运行的进程 master ...