加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux中的shell脚本管理(二)

发布时间:2016-10-23 09:09:49 所属栏目:Linux 来源:网络整理
导读:在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行不同的操作(eg:备份
副标题[/!--empirenews.page--]

在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行不同的操作(eg:备份目录不存在则创建该目录,否则跳过操作)。该文将分别从条件测试操作,if语句结构,应用示例这三个方面讲解if语句在Shell脚本中的应用。

1、条件测试操作:

需要在Shell脚本中有选择性地执行任务时,首先面临的问题就是,如何设置命令执行的条件?

在Shell环境中,可以根据命令执行后返回状态值来判断该命令是否成功执行,当返回值为0是表示成功执行,否则(非0值)表示执行失败。用于特定条件表达式的测试时,可以使用Linux系统中提供的专用工具——test命令、

使用test测试命令时,可以有以下两种形式。

test       条件表达式

【 条件表达式 】

这两种方式的作用完全相同,但通常后一种形式更为常用,也更贴近编程习惯。需要注意的是,方括号“[”或者“]”与条件表达式语句之间至少需要有一个空格进行分隔。

根据需要判断的条件内容不同,条件操作也不同,最常用的条件主要包括文件状态测试,比较整数值大小,比较字符串,以及同时判断多个条件时的逻辑关系,下面将分别进行讲解。以下主要采用方括号的测试形式。

1.1、测试文件状态

文件状态测试是指根据给定的路径名称,判断该名称对应的是文件还是目录,或者判断文件是否可读,可写,可执行等。根据判断的状态不同,在条件表达式中需要使用不同的操作选项。

-d:测试是否为目录(Directory)。

-e:测试目录或文件是否存在(Exist)。

-f:测试是否为文件(File)。

-r:测试当前用户是否有权限读取(Read)。

-w:测试当前用户是否有权限写入(Write)。

-x:测试当前用户是否可执行(Excute)该文件。

-L:测试是否为符号连接(Link)文件。

执行条件测试操作以后,通过预定义变量“$?”可以获得测试命令的返回状态值,从而能够判断该条件是否成立(返回0值表示条件成立,非0值表示条件不成立)。但通过这种方式查看测试结果会比较繁琐。

例1:测试“/etc/hosts”是否是文件,并通过“$?”变量查看返回状态值,据此判断测试结果。

[ -f /etc/hosts ]
echo $?
0   //返回值为0,表示上一步测试的条件成立。

例2:测试“/media/cdrom/Server”及其父目录是否存在,如果存在则显示“YES”否则不输出任何信息。

[ -e /media/cdrom/Server ] && echo "YES"
                                                                        // 无输出表示该目录不 存在
[ -e /media/cdrom ] && echo "YES"
YES

1.2、整数值 比较:

整数值比较是指根据给定的两个整数值,判断第一个数是否大于、等于、小于。。。。。。第2个数,可以使用的操作选项如下:

-eq:第一个数等于(Equal)第二个数。
-ne:第一个数不等于(Not Equal)第二个数。
-gt:第一个数大于(Greater Than)第二个数。
-lt:第一个数小于(Lesser Than)第二个数。
-le:第一个数小于或等于(Lesser or Equal)第二个数。
-ge:第一个数大于或等于(Greater or Equal)第二个数。

整数值比较的测试操作在Shell脚本编写中的应用较多,如:用于判断磁盘使用率、登录用户数量是否超标以及用于控制脚本语句的循环次数等。

例1:测试当前登录到系统中的用户数量是否小于或等于10,是则输出”YES“。

who | wc -l
5
[ `who | wc -l` -le 10 ] && echo ”YES"
YES

本栏目更多精彩内容:http://www.bianceng.cn/OS/Linux/

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读