bash语法之条件判断
2016-07-03 21:28
459 查看
通过一个if语句里的对某个特定的条件给予索要结果。当出现某种结果是我们希望程序在这种特定的结果下做些什么事情,就在该语句下写出来。反之就不能进行某些操作;这个和我们生活中遇到的事情是一样的。
条件判断中很多机制其中常见的机制-“ 比较”
字符测试:判断字符串之间的关系,是否相同,是否为空等
文件测试:判断文件是否存在,类型是否匹配,等等
逻辑运算:非0为假,0为真
与运算:&&
或运算:||
非运算:! :结果取反
只要命令用作条件,就表示引用的是其状态结果(即执行成功与否),而非命令的输出结果,因此,不能使用命令替换符.
num1 操作符 num2
-eq 等于 [ num1−eqnum2 ]
-ne 不等于
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
-a /路径/file:测试文件是否存在
d /路径/somefile:测试文件是否为目录文件
-b /路径/somefile :测试文件是否存在并且是否是一个块设备
-c /路径/somefile :测试文件是否存在,并且为为字符设备
-h /路径/somefile :测试文件是否存在,并且为符号链接文件
-l 和-h 同样
-p /路径/somefile :测试文件是否存在,并且为管道文件
-S 同样
file1 -nt file2 :
测试file1是否比file2更 老一些
file1 -ot file2 :
如果文件2不存在,那么它也认为文件1更新
例如:今天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的数字
相关文章推荐
- shell那些让人晕圈的事
- shell命令总结
- Exchange 2010 Powershell新建会议室邮箱-设备邮箱 !
- shell脚本的基础学习
- Shell Sudo With Password On Command
- vim编写Bash脚本
- 如何使用shell脚本快速排序和去重文件数据
- shell查询xml内容
- bash 脚本编程 利用 “=” 赋值时,左右不能留空格
- BASH
- bash变量
- linux chsh命令参数及用法详解(linux设置系统shell命令) !!!
- 更改Ubuntu 12.04默认的shell(使用的是 L 类型)
- Linux下安装终极Shell Zsh
- bash、dash与zsh shell
- zsh on windows 10 bash
- 跟我一起写shell补全脚本(Zsh篇)
- py学习之路1-字符串
- windows 10 bash update xenial(16.04)
- shell使用小结