目录
一、条件测试
1、test命令
测试表达式是否成立,若不成立返回0,否则返回其他数值
格式:
test 条件表达式
或[ 条件表达式 ]
2、文件测试
常用的测试操作符
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
3、整数值比较
[ 整数1 操作数 整数2 ]
常用的测试操作符
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
4、字符串比较
格式
[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
或 [ -z 字符串 ]
常用的测试操作符
= | 字符串内容相同 |
!= | 字符串内容不同,!号表示相反的意思 |
-z | 字符串内容为空 |
5、逻辑测试
格式
[ 表达式1 ] 操作符 [ 表达式2 ]
或 命令1 操作符 命令2
-a或&& | 逻辑与,而且的意思 |
-o或▕▕ | 逻辑或,或者的意思 |
! | 逻辑否 |
二、if语句的结构
在shell脚本应用中,if语句是最为常用的一种流程控制方式,用来根据特定的条件测试结果,分别执行不同的操作(如果...那么...)。根据不同的复杂程度,if语句的选择结构可以分为三种基本类型,适用于不同的应用场合。
1、单分支的if语句
格式:
if [ 条件判断式 ]; than
当条件判断成立时,执行一条或多条命令
fi
单分支if语句的执行流程:
首先判断条件测试操作的结果,如果返回值为0,表示条件成立,则执行then后面的命令序列,一直遇到fi结束判断为止,继续执行其他脚本代码;如果返回值不为0,则忽略then后面的命令序列,直接跳至fi行以后执行其他脚本代码
2、双分支的if语句
对于双分支的选择结构,要求针对“条件成立”“条件不成立”两种情况分别执行不同的操作
if [ 条件判断式 ]; then
当条件判断成立时,可以执行一条或多条命令
else
当条件判断不成立时,可以执行一条或多条命令
fi
双分支if语句的执行流程:
首先判断条件测试操作的结果,如果条件成立,则执行then后面的命令序列1,忽略else及后面的命令序列2,直到遇见fi结束判断;如果条件不成立,则忽略then及后面的命令序列1,直接跳至else后面的命令序列2并执行,直到遇见fi结束判断
示例:判断用户输入是否为yes
3、多分支的if语句
由于if语句可以根据测试结果的成立、不成立分别执行操作,所以能够嵌套使用,进行多次判断
if [ 条件判断式 ]; then
当条件判断成立时,可以执行一条或多条命令
elif [ 条件判断式二 ]; then
当条件判断成立时,可以执行一条或多条命令
else
当上面的条件判断都不成立时,可以执行一条或多条命令
fi
多分支if语句的执行流程:
首先判断条件测试操作1的结果,如果条件1成立,则执行命令序列1,然后跳至fi结束判断;如果条件1不成立,则继续判断条件测试操作2的结果,如果条件2成立,则执行命令序列2,然后跳至fi结束判断....如果所有条件都不满足,则执行else后面的命令序列n,直到遇见fi结束判断
示例:根据输入考试分数不同区分优秀、合格、不合格