您的位置:首页 > 运维架构 > Shell

bash语法之条件判断

2016-07-03 21:28 459 查看
通过一个if语句里的对某个特定的条件给予索要结果。当出现某种结果是我们希望程序在这种特定的结果下做些什么事情,就在该语句下写出来。反之就不能进行某些操作;这个和我们生活中遇到的事情是一样的。

例如:今天10号到了每月要发薪水的时间了,财务需要做一个if判断了,索要条件的结果如下:
if 条件1:账户里有钱吗?√满足&&条件2:老板让发薪水吗?√满足&&条件3:财务是否知道每个人的银行信息满足!
语句1:今天发薪水!
结束:
条件表示式里的各种原因并不在判断语句考虑的范围之内,只对结果是否满足加以考虑。什么意思呢? 就是说在这个if判断里面,条件1:对于钱怎么来的不加以考虑,关键是是否有钱;条件2:老板是否被农民工胁迫不加以考虑,关键是老板同意;条件3:财务对每个人的银行信息是否准确不加以判断,只对是否有对应人的银行信息加以判断。所以如果想通过if判断完成自己想做的事情,对应要判断的条件要一定要考虑清楚,需要对哪种结果加以判断。


条件判断中很多机制其中常见的机制-“ 比较”

条件判断的常用判断类型:

整数测试:判断数字之前的关系的:大小,相等,大于小于等

字符测试:判断字符串之间的关系,是否相同,是否为空等

文件测试:判断文件是否存在,类型是否匹配,等等

在所有的判断中,条件的成立都是靠命令状态返回值来实现的:“ $?”

0:正确
1-255:错误


逻辑运算:非0为假,0为真

与运算:&&

或运算:||

非运算:! :结果取反

bash 条件判断语法:放在if后面对需要判断的内容放在

text 判断表达式
[ 判断表达式 ]  // [  ] 内侧两边必须有空格,否则为语法错误
[[ 判断表达式 ]]


bash 条件判断用的关键字为:if

又分为多分支

单分支:

if 条件; then
分支1;
fi


双分支:

if 条件; then
分支1;
else
分支2;
fi


多分支:

if 条件; then
分支1;
elif 条件2; then
分支2;
elif 条件3; then
分支3;
...
else
分支n;
fi


只要命令用作条件,就表示引用的是其状态结果(即执行成功与否),而非命令的输出结果,因此,不能使用命令替换符.

整数测试

二元测试:满足条件是真,否则是假


num1 操作符 num2

-eq 等于 [ num1−eqnum2 ]

-ne 不等于

-le:小于等于

-ge:大于等于

-lt:小于

-gt:大于

字符测试

双目:
> : 大于
< :小于
==:等于,等值比较
=~:左侧是字符串,右侧是一个模式,判断左侧的字符串能否被右侧的模式所匹配:通常只在[[]]中使用
模式中可以使用行首、行尾锚定符,但是模式不要加引号
!=, <>: 不等于
单目:
-n 字符串: 字符串是否不空,不空为真,空则为假
-z 字符串:字符串是否为空,空则为真,不空则假:


文件测试

通常就是测试文件是否存在,文件是否是特定的某个类型等

单目测试

测试文件是否存在;是为真,不是则为假

-e /路径/file:测试文件是否存在

-a /路径/file:测试文件是否存在

对文件类型的测试

-f /路径/file: 测试文件是否为普通文件

d /路径/somefile:测试文件是否为目录文件

-b /路径/somefile :测试文件是否存在并且是否是一个块设备

-c /路径/somefile :测试文件是否存在,并且为为字符设备

-h /路径/somefile :测试文件是否存在,并且为符号链接文件

-l 和-h 同样

-p /路径/somefile :测试文件是否存在,并且为管道文件

-S 同样

当前的执行用户对此文件有读取权限

-r /路径/somefile

当前的执行用户对此文件有写权限

-w /路径/somefile

当前的执行用户对此文件有执行权限

-x /路径/somefile

测试文件是否为空

-s /路径/somefile 测试文件是否存在并且不为空

双目测试

测试file1是否比file2更 新一些

file1 -nt file2 :

测试file1是否比file2更 老一些

file1 -ot file2 :

如果文件2不存在,那么它也认为文件1更新

bash知识点之脚本自动退出

exit n n为不为0,1,127,255的数字
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: