Shell脚本应用

本文详细介绍了Shell脚本中的条件测试和if语句的使用,包括文件测试、整数比较、字符串比较和逻辑测试。通过实例展示了如何判断目录存在、文件权限、整数相等以及字符串匹配等,并演示了if语句的单分支、双分支和多分支结构在实际任务中的应用,如目录管理、权限检查和自定义逻辑判断。
摘要由CSDN通过智能技术生成

Shell脚本应用

技能展示
学会常见的条件测试操作
学会使用if条件语言

简 介
在简单的shell脚本程序中,各条语句将先后顺序依次执行,从而实现批处理的
自动化过程。然而,单一的顺序结构使得脚本过于机械化,不够“智能”,难以处
理更加灵活的系统任务。
本环节将学习如何进行条件测试,并通过正确使用if语句,使Shell脚本具有一定
的"判断"能力,以根据不同的条件来完成不同的管理任务。

重 点
整数值比较,逻辑测试
if语句的结构及应用

理论讲解
条件测试操作:要使Shel脚本程序具备一定的"智能",面临的第一个问题就是如何区分不同的
情况以确定执行如何种操作。例如,当磁盘使用率超过95%时,发生告警信息;当备份目录不
存在时,能够自动创建;当源码编译程序时,若配置失败则不再继续安装等。
Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,
否则(非0值)表示失败或者异常。使用专门的测试工具——test命令,可以对特定条件进行测
试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。
使用test测试命令时,包括以下两种形式。
—————————————————————————————————————————
test 条件表达式

[ 条件表达式 ]
__________________________________________________________________________
这两种方式的作用完全相同,但通常后一种形式更为常用,也更贴近编程习惯。需要注意的
是,方括号 “[ 或 ]” 与条件表达式之间需要至少一个空格进行分隔。
根据需要测试的条件类别不同,条件表达式也不同。比较常用的条件操作包括文件测试,整数
值比较,字符串比较,以及针对多个条件的逻辑测试,下面分别进行介绍。
文件测试
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读,
可写,可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。
~ -d:测试是否为目录(Directory)。
~ -e:测试目录或文件是否存在(Exist)。
~ -f:测试是否为文件(File)。
~ -r:测试当前用户是否有权限读取(Read)。
~ -w:测试当前用户是否有权限写入(Write)。
~ -x:测试是否设置有可执行(Excute)权限。

操 作
一.test条件测试的基本使用
1)盘/mnt是否是目录,是目录显示yes不是为空。
[root@Centos ~]# test -d /mnt/ && echo “yes”
在这里插入图片描述
2)判断对/mnt/目录是否有写入权限,有写入权限显示yes
[root@Centos ~]# [ -w /mnt ] && echo “yes”
在这里插入图片描述
3)判断是否有写入权限有显示为0
[root@Centos ~]# [ -w /mnt ]
[root@Centos ~]# echo $?
在这里插入图片描述
3.整数比较
1)常见的比较运算符
-gt:大于
-lt:小于
-ge:大于等于
-le:小于等于
-eq:等于
-ne:不等于
2)判断是否相等,相等显示yes
[root@Centos ~]# test 5 -eq 5 && echo “yes”
在这里插入图片描述
3)判断历史命令小于100显示yes
[root@Centos ~]# abc=history | wc -l
[root@Centos ~]# [ $abc -le 100 ] && echo “yes”在这里插入图片描述
4.字符串比较
1)字符串比较的操作符
=:等于
!=:不等于
-Z:判断字符串是否为空
2)判断第一个字符串和第二个字符串是否一致,一致显示yes
[root@Centos ~]# test “aa” = “aa” && echo “yes”
在这里插入图片描述
3)判断系统是否是中文,是中文显示yes
[root@Centos ~]# [ $LANG = zh_CN.UTF-8 ] && echo “yes”
在这里插入图片描述
5.逻辑测试
1)逻辑测试操作符
&&:而且或者使用-a,两个结果必须全部为真
||:或者使用-0,两个结果匹配任意一个为真
!:否,取反不成立显示为真
2)使用而且进行判断
[root@Centos ~]# [ -d /etc/ ] && [ -d /mnt ] && echo “yes”
在这里插入图片描述
3)使用或比较判断
[root@Centos ~]# [ -d /etc ] || [ -f ./1.txt ] && echo “yes”
在这里插入图片描述
二.判断
1.if单分支
在这里插入图片描述

1)if单分支语法结构
If [ 条件 ]
then 执行命令序列
fi
2)单分支特点
满足条件执行命令序列
不满足条件退出
3)判断/media目录是否存在,存在显示yes
[root@Centos ~]# vim test_directory.sh
在这里插入图片描述
在这里插入图片描述
4)media目录不存在创建
[root@Centos ~]# vim mkdir_media
在这里插入图片描述
2.双分支if判断
1)双分支语法结构
If [ 条件 ]
then
命令序列
else命令序列
fi
2)判断/test目录是否存在,存在显示yes不存在创建目录
[root@Centos ~]# vim test.sh
[root@Centos ~]# cat test.sh
在这里插入图片描述
在这里插入图片描述
3.if多分枝
在这里插入图片描述
在这里插入图片描述

1)if多分枝语法结构
在这里插入图片描述
在这里插入图片描述

If [ 条件 ]
then命令序列1
elif [ 条件2 ]
then
命令序列2
else命令序列3
fi

2)判断学生查询的成绩
[root@Centos ~]# vim test01.sh
[root@Centos ~]# cat test01.sh
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值