自动化运维必须要学的shell脚本---------条件语句的详细解读
一.条件语句
1.test命令
测试表达式是否成立,若成立返回0,否则返回其他数值。
格式1: test 条件表达式 |
格式2: [ 条件表达式 ] |
实例:比较整数的大小是否正确
判断目录是否存在
test模块提供了在if-then语句中测试不同条件的途径,如果test命令中列出的条件成立,test命令就会退出并返回状态码0,这样if-then语句就与其他编程语言中的if-then语句以类似的方式工作了,如果条件不成立,test命令就会退出并返回非零的退出状态码,这使得if-then语句不会再被执行。
2.文件测试
常用的测试操作符
-d: 测试是否为目录(Directory)
-e: 测试目录或文件是否存在(Exist)
-f: 测试是否为文件(File)
-r: 测试当前用户是否有权限读取(Read)
-W: 测试当前用户是否有权限写入(Write)
-X: 测试当前用户是否有权限执行(eXcute)
-L: 测试是否为符号链接
3.整数值比较
1.格式:[ 整数1 操作符 整数2 ]
2.常用的测试操作符
- -eq∶ 等于(Equal)
- -ne∶ 不等于(Not Equal)
- -gt∶ 大于(Greater Than)
- -It∶ 小于(Lesser Than)
- -le∶ 小于或等于(Lesser orEqual)·
- -ge∶ 大于或等于(Greateror Equal)
- 实例:查询当前目录下的文件数是否大于10,如果大于,则进行提示。
实例:查看系统内存是否低于1024M,如果低于则提示。
4.字符串比较
1.格式:
[ 字符串1 = 字符串2 ] #判断是否相等
[ 字符串1 != 字符串2 ] #判断是否不等
2.常用的测试操作符
=∶ 字符串内容相同
!=∶ 字符串内容不同,!号表示相反的意思
z∶字符串内容为空
实例:判断当前系统语言环境是否为“us.en”,如果不是则提示。
实例:测试用户输入的是否为yes,如果是的话,则进行文件覆盖(这里仅代表输出问文本覆盖,并不是实际操作,实际操作需要写执行命令)
5.逻辑测试
1.格式:
格式1∶ [ 表达式1 ] 操作符 [ 表达式2 ]…
格式2∶ 命令1 操作符 命令2…
2.常用的测试操作符
- -a或&&∶ 逻辑与,"而且"的意思
- -o或||∶ 逻辑或,"或者"的意思
- !∶
6.if语句
6.1 单分支结构
如果只有一个判断式要进行,那么我们可以使用单分支的if语句
1.格式:
if [ 条件判断式 ]; than
当条件判断成立时,可以进行的命令工作内容
fi #这里将if反过来写,结束if语句的意思
实例:使用单分支if语句判断test文件是否存在
6.2 双分支结构
在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了:
1.格式:
if [ 条件判断式 ]; than
当条件判断成立时,可以进行的命令工作内容
else
当条件判断不成立时,可以进行的命令工作内容
fi
2.原理图
实例:判断用户输入的是否为yes
6.3 多分支结构
如果数据需要进行多种不同的判断,则可以使用多分支结构
1.格式:
if [ 条件判断式 ]; than
当条件判断成立时,可以进行的命令工作内容
elif [ 条件判断式二 ]; than
当条件判断成立时,可以进行的命令工作内容
else
当上面的条件判断都不成立时,可以进行的命令工作内容
fi
2.原理图:
实例:判断用户输入的为yes还是no,或者是其他错误情况。
7. case语句结构
1.格式:
case 变量名称 in
“第一个变量内容” 程序段
;;
“第二个变量内容” 程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
案例:判断用户掌握哪一种编程语言。