通过一个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的数字