壳条件测试语句及三种如果语句

7 - Shell_条件操作测试及如果语句

要使壳脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作,例如,当磁盘使用率超过95%发送警告;当备份目录不存在时能够自动创建;当源码编译程序的配置失败则不再继续安装等。

壳环境根据命令执行后的返回状态值($ ?)来判断是否执行成功,当返回值为0,表示成功,值为其他时,表示失败。

使用专门的测试工具以及命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值0为成立)

使用测试命令的两种形式

答:测试条件表达式

B:[条件表达式)

以上两种方法的作用完全一样,后者为常用。但后者需要注意方括号“[”、“]”与条件表达式之间至少有一个空格。

1。文件测试

文件测试指的是根据给的路径,判断对应的是文件还是目标,或者判断文件是否有可读可写,可执行等权限。常见操作如下:

壳条件测试语句及三种如果语句

执行条件测试操作以后,通过预定义变量“$ ?”可以获得测试命令的返回状态,从而判断该条件是否成立。

例如:一下操作判断/媒体/cdrom/目录是否存在,返回值为1成立。

壳条件测试语句及三种如果语句

若测试条件不存在,则测试返回值将不为0(通常为1),如图所示:

壳条件测试语句及三种如果语句

2。整数值比较

主要根据给定的两个值,判断第一个与第二个数的关系,如是否大于,小于,等于第二个数。常见选项如下:

壳条件测试语句及三种如果语句

整数值比较在Shell脚本应用中比较多例。如:判断已登录用户数量,开启进程数,磁盘使用率是否超标,以及软件版本是否符合要求。实际使用时,往往会通过变量引用,命令替换等方式来获取一个值。

例如:若要判断当前已登录的用户数,当超过五个时输出“可能”,可以执行以下语句。其中,已登录用户数可以通过“谁| wc - l”查询,以命令替换方式进行。

壳条件测试语句及三种如果语句

0

再例如:若要判断当前可用内存(缓冲/缓存)大小,当低于2048 MB时输出具体值,可以执行以下操作。其中“自由- m”命令以MB单位输出内存信息。

壳条件测试语句及三种如果语句

3。字符串比较

通常用来检查用户输入,系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置是否符合要求,常见选项如下:

壳条件测试语句及三种如果语句

例如:判断当前系统的语言环境,当发现不是“en。我们”时输出提示信息”不是en。我们”:

壳条件测试语句及三种如果语句

再例如:在Shell脚本中,经常需要用户输入“是”或“否”来确认某个任务,一下操作展示了确认交互的过程,当然,实际使用时还会根据变量“应答”的取值分别执行进一步的操作。

壳条件测试语句及三种如果语句

4。逻辑测试

是判断两个或多个条件之间的依赖关系,当系统任务取决于多个不同的条件时,根据这些条件是否同时成立或只要有其中一个成立等情况,需要有一个测试的过程。常用选项如下:

,,:逻辑与,表示”而且”,只有前后两个条件都成立时,整个测试命令的返回值才为0。使用测试命令时,“,和”可改为“——”

| |:逻辑或,表示“或”者,只有前后两个条件中一个成立,整个测试命令的返回值才为0。使用测试命令时,“| |”可改为“o”

!:逻辑否,表示“不”,只有当指定的条件不成立时,整个测试命令的返回值才为0。

“,和”、“| |”通常也用于间隔不同的命令操作,其作用是相似得。

例如:若要判断当前Linux系统的内核版本是否大于2.4,可以执行以下操作。

壳条件测试语句及三种如果语句