第四 shell脚本的条件测试与比较&&if条件语句
@(shell脚本)[学习]
[toc]
测试命令test
结论:test命令测试的功能很强大,但是和[ ]
、[[ ]]
的功能有所重合,因此,在实际工作中选择一种适合自己的语法就好了。
文件测试表达式
常用文件测试操作符 | 说明 |
---|---|
-d 文件 | directory,目录 |
-f 文件 | file,普通文件 |
-e 文件 | exist,-e不辨别是目录还是文件 |
-r 文件 | read,可读文件 |
-s 文件 | size,文件大小不为0的文件 |
-w 文件 | write,可写文件 |
-x 文件 | executable,可执行文件 |
-L 文件 | link,链接文件 |
f1 -nt f2 | newer than 文件f1比f2新,根据修改时间计算 |
f1 -ot f2 | older than 文件f1比f2旧,根据修改时间计算 |
提示:测试文件的读写执行等属性,不光是根据文件属性rwx的标识来判断,还要看当前执行测试的用户是否真的可以按照对应的权限操作该文件。
tips: 测试变量时要加””,否则结果可能不对。变量没赋值返回结果也为真
字符串测试表达式
常用字符串测试操作符 | 说明 |
---|---|
-n “字符串” | no zero,字符串长度不为0 |
-z “字符串” | zero,字符串长度为0 |
“串1”=”串2” | 若字符串1等于字符串2,则为真,可使用”==”代替”=” |
“串1”!=”串2” | 若字符串1不等于字符串2,为真 |
- 对字符串的测试一定要将字符串加双引号之后再进行比较。
- 比较字符串两段一定要有空格
整数二元比较操作符
在[]以及test中使用的比较符 | 在(())和[[]]中使用的比较符号 | 说明 |
---|---|---|
-eq | ==或= | equal,相等 |
-ne | != | not equal,不等 |
-gt | > | greater then, 大于 |
-ge | >= | greater equal, 大于等于 |
-lt | < | less then,小于 |
-le | <= | less equal,小于等于 |
- “=”和”!=”可以在[]中使用,但”>”、”<”要用反斜线”\”转义
- 比较符号两端也要有空格
[[]]
是扩展的test命令,其语法更丰富也更复杂,建议除非是特殊的正则匹配等,在[]无法使用的情况下才会考虑使用[[]]
逻辑操作符
在[]以及test中使用的比较符 | 在(())和[[]]中使用的比较符号 | 说明 | ||
---|---|---|---|---|
-a | && | and | ||
-o | \ | \ | or | |
! | ! | not |
if条件语句
基本可以用测试表达式加&&或||代替简单的if语句。主要是嵌套if语句和多分支语句。if在脚本中是非常重要的模块。