一、条件测试
1、条件测试操作
要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。
使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。
使用test测试命令时,有以下两种形式:
格式一: test 条件表达式
格式二:[ 条件表达式 ] #方括号"["或"]"与条件表达式之间需要至少一个空格进行分离
2、文件测试
格式:[ 操作符 文件或目录 ]
常用的操作符:
- -e:测试目录或文件是否存在(Exist)
- -d:测试是否为目录 (Directory)
- -f:测试是否为文件 (File)
- -r:测试当前用户是否有权限读取 (Read)
- -w:测试当前用户是否有权限写入 (Write)
- -x:测试是否设置有可执行 (Excute)权限
- -L:测试是否为符号链接
3、证书制比较
格式: [ 整数变量1 操作符 整数变量2 ]
常用的操作符:
- -eq:等于
- -ne:不等于
- -gt:大于
- -lt:小于
- -le:小于等于
- -ge:大于等于
4、字符串比较
格式1: [ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2: [ -z 字符串 ]
常用的操作符:
- =:字符串内容相同
- !=:字符串内容不同,!表示相反的意思
- -z:字符串内容为空
- -n:检查是否有字符串存在
5、逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ]....
格式2:命令1 操作符 命令2
常用的测试操作符:
- -a或&&:逻辑与,“而且”的意思
- -o或|| :逻辑或,“或者”的意思
- ! :逻辑否
二、if语句的结构
1、单分支结构
格式:
if 条件测试操作
then 命令序列
fi
操作过程:
判断已用磁盘空间是否大于X%,如果是就报警提示。
2、if双分支结构
格式:
if 判断条件
then
条件成立的分支代码
else
条件不成立的分支代码
fi
操作过程:
检测80端口是否在监听,如果是,则提示”网站服务已在运行“;如果否,则启动httpd服务。
3、if多分支结构
格式:
if 判断条件1
then
条件1为真的分支代码
elif 判断条件2
then
条件2为真的分支代码
elif 判断条件3
then
条件3为真的分支代码
...
else
以上条件都为假的分支代码
fi
操作过程:
使用多分支结构创作脚本文件使85~100分之间判为优秀,70-84之间判为合格,其余为不合格
三、case语句的结构
格式:
case 变量引用 in
模式1)
命令分支1
;;
模式2)
命令分支2
;;
...
*)
默认命令分支
esac
操作过程:
使用case语句结构创作脚本文件使85~100分之间判为优秀,70-84之间判为合格,其余为不合格