赞
踩
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
执行条件测试操作以后,通过预定义变量 “ $? ” 可以获得测试命令的返回状态值,从而判断该条件是否成立。
参数 | 说明 |
---|---|
-d | 测试是否为目录 |
-e | 测试目录或文件是否存在 |
-f | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试是否设置有可执行权限 |
-s | 如果文件存在且至少有一个字符则为真 |
-c | 如果文件存在且为字符型特殊文件则为真 |
-b | 如果文件存在且为块特殊文件则为真 |
整数值比较指的是根据给定的两个整数值,判断第一个与第二个数的关系。
参数 | 意义 |
---|---|
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
字符串比较通常用来检查用户输入、系统环境等是否满足条件。
参数 | 意义 |
---|---|
= | 等于则为真 |
!= | 不等于则为真 |
-z | 字符串的长度为零则为真 |
-n | 字符串的长度不为零则为真 |
逻辑测试指的是判断两个或多大条件之间的依赖关系。
当系统任务取决于多个不同的条件时,判断是根据这些条件同时成立还是只要有其中一个成立等情况,需要有一个测试的过程。常用的逻辑测试操作如下:
参数 | 意义 |
---|---|
&& | 逻辑与,表示 " 而且 " ,只有当前后两个条件都成立,整个测试命令的返回值才为0结果成立。使用test命令测试时,“ && ” 可改为 “ -a ”。 |
II | 逻辑或,表示 “ 或者 ”,只要前后两个条件中有一个成立,整个测试命令的返回值即为0结果成立。使用test命令测试时,“ II ” 可改为 “-0” 。 |
! | 逻辑否,表示 “不”,只有当指定的条件不成立时,整个测试命令的返回值才为0结果成立 |
if语句是最为程勇的一种流程控制方式,用来根据特定的条件测试结果,分别执行不同的操作。
“分支“指的是不同测试结果所对应的执行语句,对于单分支的选择结构,只有在”条件成立“时才会执行相应的代码,否则不执行任何操作。格式如下:
if 条件测试操作
then
命令序列
if
条件测试操作即条件表达式语句,也可以是其他可执行的命令语句;命令序列指的是一条或多条可执行的命令行,也包括嵌套使用的if语句或其他流程控制语句。
单分支 if 语句的执行流程:首先判断条件测试操作的结果,返回值为0,表示条件成立,则执行then 后面的命令序列,一直到遇见 fi 结束判断为止,继续执行其他脚本代码;如果返回值不为0,则忽略 then 后面的命令序列,直接跳至 fi 行以后执行其他脚本代码。
对于双分支的选择结构,要求针对 “ 条件成立 ” “ 条件不成立 ” 两种情况分别执行不同的操作。双分支 if 语句的语法格式如下:
if 条件测试操作
then
命令序列 1
else
命令序列 2
fi
双分支if语句的执行流程:首先判断条件测试操作的结果,如果条件成立,则执行 then 后面的命令序列 1,忽略else 及后面的命令序列 2,直到遇见 fi 结束判断;如果条件不成立,则忽略 then 及后面的命令序列 1,直接跳至 else 后面的命令序列 2 并执行,直到遇见 fi 结束判断。
相当于嵌套使用,进行多次判断。语法格式如下:
if 条件测试操作 1
then
命令序列
elif 条件测试操作 2
then
命令序列 2
else
命令序列 3
fi
多分支 if 语句的执行流程:首先判断条件测试操作1的结果,如果条件1成立,则执行命令序列1,然后跳转 fi结束判断;如果条件 1 不成立,则继续判断条件测试操作2 的结果。如果条件2 成立,则执行命令序列 2 ,然后跳至 fi 结束判断。如果所有的条件都不满足,则执行 else 后面的命令序列 n,直到遇见 fi 结束判断。
case 语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。case 分支语句的语法结构如下:
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
......
*)
默认命令序列
seac
case 语句的执行流程:首先使用 “变量值”与模式1 进行比较,若取值相同则执行模式1 后的命令序列,直到遇见双分号 “;;” 后跳至 esac,表示结束分支;若与模式1不相匹配,则继续与模式2进行比较,若取值相同则执行模式2后的命令序列,直到遇见双分号“;;”后跳转至esac,表示结束分文。以此类推,若找不到任何匹配的值,则执行默认模式*)后的命令序列,直到遇见 esac 后结束。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。