linux中的shell脚本管理(二)
|
副标题[/!--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/ (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

