Shell编程之条件语句
Posted 正在迷途
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程之条件语句相关的知识,希望对你有一定的参考价值。
一、条件测试
Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常
1.测试命令 test
test命令可以对特定条件进行测试,并根据返回值来判断条件是否成立($?返回值为0表示条件成立)
格式1:test 条件表达式
格式2:[ 条件表达式 ] 方括号 [ 或 ] 与条件表达式之间至少要一个空格进行分割
2.文件测试
格式:[ 操作符 文件或目录 ]
常用的操作符
-e | 测试目录或文件是否存在(Exist) |
-d | 测试是否为目录(Directory) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试是否设置有可执行(Excute)权限 |
-L | 测试是否为符号链接 |
3.整数值比较
根据给定的两个整数值,判断前后关系,比如大、小,或等于
格式:[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq | 等于(Equal) (==) |
-ne | 不等于(Not Equal) (!=) |
-gt | 大于(Greater Than) (\\<) |
-lt | 小于(Lesser Than) (\\>) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
示例:判断当前可用空闲内存(free)大小,若当前内存小于500MB,则建议及时清理
free 以kb单位显示
free -m 以MB为单位
free -h 仅centos7可用
4.字符串比较
格式1:[字符串1 = 字符串2 ] 格式2:[ -z 字符串 ]
常用的测试操作符
= | 字符内容相同 |
!= | 字符内容不同,!号表示取反,相反的意思 |
-z | 检测字符串是否为空,对于未定义或赋予空值的变量将视为空串 |
5.逻辑测试
- 判断两个或多个条件之间的依赖关系
- 当系统任务取决于多个不同的条件的时候,判断是根据这些条件同时成立还是只要其中一个成立等情况
基本格式:
- 格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
- 格式2:命令1 操作符 命令2 ...
常用的测试操作符
- -a或&&:逻辑与,"而且"的意思
- -o或||:逻辑或,"或者"的意思
- !:逻辑否
2.if语句
1.单分支语句
格式:
if 条件测试操作
then 命令序列
fi
示例
2.双分支结构
格式:
if 条件测试操作
then 命令序列1
else 命令序列2
- 若条件成立,则执行then后面的命令,忽略else,直到fi结束
- 若条件不成立,则忽略then,跳至else后面的命令序列执行,直到fi结束
示例
3.多分支语句
格式:
if 条件测试操作
then 命令序列
elif 条件测试操作2
then 命令序列2
else
命令序列3
示例
三、case分支语句
- case语句主要用于以下场景:当每个变量存在多种取值时,需要对其中的每一种取值分别执行不同的命令序列
- if语句是要判断多个不同条件,而case判断一个变量的不同取值
格式:
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
....
*)
默认命令序列
- case行尾必须为单词 in ,每一行必须以括号 )结束
- 双分号 ;; 表示命令序列结束
- 可以用方括号[]表示一个连续的范围;还可以用 | 表示,比如“A|B”
- 最后的 *) 表示默认模式,如果以上取值都不相同,则执行此行
以上是关于Shell编程之条件语句的主要内容,如果未能解决你的问题,请参考以下文章