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用法见下一章节)