shell脚本基础2
一条件测试语句
·专门的测试工具test
test命令
测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
echo $?:命令用来检测上一条命令是否成功,返回值为0,表示成功,非0,表示异常;例
·文件测试
格式:[ 操作符 文件或目录 ]或test 操作符 文件或目录
常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
例如
分两次执行文件测试
使用逻辑"且",只需一条命令即可测试
或者提示输出别的提示(逻辑且:当第一条命令正常执行才会执行第二条命令,否则无显示)
·整数值比较
格式:[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
例如
测试当前用户数是否大于2
测试内存容量是否小于1024M
·字符串比较
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:[ -z 字符串 ]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
例如:
检测当前系统语言是什么;是否英语
交互式方法让用户选择
·逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2:命令1 操作符 命令2 ...
常用的测试操作符
-a或&&:逻辑与,"而且"的意思;
-o或||:逻辑或,"或者"的意思
!:逻辑否
例如
测试linux内核版本是否大于2.4
测试当前进程数是否大于100
二 if条件语句
如果……那么……
·单分支结构:如果条件成立,则执行then命令序列,然后结束;不成立则立即结束
格式:
if 条件测试操作
then 命令序列
fi
例如
如果磁盘空间大于10%,则报警
·双分支结构:如果条件成立,则执行then命令序列,然后结束;不成立则执行else命令序列,然后结束
例如
检查80端口是否在监听,如果监听,则提示;如果没有监听,则开启服务
·多分支结构:如果第一个条件成立,则执行then命令序列,然后结束;不成立则判断第二个条件是否成立,成立则执行then命令序列,然后结束;不成立则执行else命令序列;然后结束
格式
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
例如
判断学生成绩的等级(while用法见下一章节)