Shell脚本—if判断,条件判断
-
条件测试
单一的顺序结构式脚本过于机械化,脚本执行不够智能,难以处理灵活复杂的系统任务。使用if语句具有判断能里,根据不同的条件来完成不同的任务。
测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值根据命令执行的返回值来做判断($?)
0 真 执行成功 True
非0 假 执行失败 False
test命令测试的两种形式:
test 条件表达式
[ 条件表达式 ]#中括号于字符串中间至少包含一个空格,应用更加普遍
常见的条件测试:文件测试,整数值比较,字符串比较,多个条件的逻辑测试 -
文件测试
根据给定的路径名称,判断对应的是文件还是目录,判断文件是否可读,可写,可执行等。
-d:测试是否为目录directory -f:测试是否为文件file -e:测试目录或者文件是否存在existe -r:测试当前用户是否有读取权限read -w:测试当前用户是否有写入权限write -x:测试文件是否有执行权限excute
-
整数比较
根据给定的两个整数值,判断第一个数是否大于,小于,等于第二个数
-eq :表示等于(=) -ne :表示不等于(!=) -gt :表示大于(>) -lt :表示小于(<) -le :表示小于或等于(<=)只需要满足其中的任意一个条件 -ge :表示大于或等于(>=)只需要满足其中的任意一个条件
-
字符串比较
检查用户的输入是否符合要求,系统环境是否满足条件
操作选项:
=:第一个字符串于第二字符串相同 !=:表示不相同,!表示取反的意思 -z:检查字符串是否为空,未定义或赋予控制的变量,一般用于测试变量值
-
逻辑测试
测试两个条件或多个条件之间的依赖关系
&&(-a):逻辑 与,而且,和 ##需要满足所有前提条件,才会执行下一步操作 ||(-o):逻辑 或,或者 ##只需要满足任意一个前提条件,就会执行下一步 !:逻辑 否 !写到[]里外都可以 ##取反的意思,若满足了前提条件,则不执行下一步,若不满足前提条件,则执行下一步
-
多分支结构
elif的数量不限制,数量多时建议使用case
if [ 条件判断语句1 ] then 命令序列1 elif [ 条件判断语句2 ] then 命令序列2 else 命令序列3 fi