提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、条件测试
(一)、test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
文件测试
[ 操作符 文件或目录 ]
常用的测试操作符
常用选项
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有读写权限(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-s:测试存在且文件大小为空
-L:测试是否为链接文件
(执行测试完之后,通过**预定义变量$?**可以获得测试命令的返回状态值,从而判断该条件是否成立)
(二)、整数值比较
[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
(三)、字符串比较
格式1:
[ 字符串1 = 字符串2 ] 或 [ 字符串1 == 字符串2 ] #表示字符串1跟字符串2相同
[ 字符串1 != 字符串2 ] # 表示字符串1跟字符串2 不同
格式2:
[ -z 字符串 ] #检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串
[ -n 字符串 ] #检查是否有字符串存在
#常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,!号表示取反的意思
-z:字符串内容为空
(四)、逻辑测试
格式1:【表达式1】操作符【表达式2】
格式2:命令1 操作符 命令2
常用的测试操作符
-a或&&:逻辑与,“而且”的意思
-o或||:逻辑或,“或者”的意思
!:逻辑否
二、if语句的结构
(一)、单分支结构
if 条件测试操作
then
命令序列
fi
(二)、if双分支语句
if 条件判断[ ]
then
cmd1
else
cmd2
fi
ping 脚本
判断当前用户是不是管理员
(三)、多分支结构
if 条件判断[ ]
then
cmd1
elif 条件判断[ ]
then
cmd2
elif 条件判断[ ]
then
cmd3
else
cmd2
fi
跑步比赛,输入你的比赛成绩成绩范围为(0-10),如果成绩大于等于8且小于等于10,则成绩合格进入决赛,再根据性别分入相对应的组别,如果成绩不合格,则淘汰。
评委被投诉后,现将女生、男生需要区分开来,女生7-10分为优秀,男生8-10分为优秀,女生的学号为1-10 男生的学号为11-20 ,请以交互时的方式询问“请输入参赛学员的学号(1-20):”,最后输出"该学生为男生/女生,成绩为优秀"
(四)、嵌套if
判断httpd 服务有没有开启,如果没有安装就进行安装并运行httpd 如果httpd在运行则输出“httpd is running”。
判断系统有无此用户
三、case语句(相当于一种菜单)
(一)、case语句结构
case 语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写
case 语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的 if 语句非常相似,只不过 if 语句需要判断多个 不同的条件,而 case 语句只是判断一个变量的不同取值。
(二)、case多分支结构
(三)、case多分支语句
语法格式:
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 1
;;
* )
默认命令序列
esac
case 行尾必须为单词“in”,每一模式必须以右括号“)”结束。 双分号“;;”表示命令序列的结束。 模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号 “|”表示或,如“A|B”。 最后的“*)”表示默认模式,其中的*当于通配符。
十位数,百位数的表示并根据所输入的数字对号入座
编写控制防火墙服务开启与关闭的脚本
编写apache启动服务脚本