一天一看————Shell编程条件语句操作命令

10 篇文章 1 订阅

一、条件测试

条件测试的概述

1、条件测试的作用:对特定的条件进行判断,已决定如何执行操作。

2、条件测试大概分为一下几类:

文件测试、整数测试、字符串测试、逻辑测试

测试方法

使用test命令

测试表达式是否成立,若成立返回0,否则返回其他数值

格式1:test 条件表达式

格式2[ 条件表达式 ]
注意使用格式2,中括号与条件表达式之间需要加上空格

文件测试

[操作符文件或目录]

常用的测试操作符

字符说明
-d测试是否为目录(Directory)、查看目录是否存在
-e测试目录或文件是否存在(Exist)
-f测试是否为文件(File)、查看文件是否存在
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)
-L测试是否为符号链接

文件测试操作实验

在这里插入图片描述

整数测试

[ 整数1 操作符 整数2 ]

常用的测试操作符

字符说明
-eq等于(Equal)
-ne不等于(Not Equal)
-gt大于(Greater Than)
-lt小于(Lesser Than)
-le小于或等于(Lesser or Equal)
-ge大于或等于(Greater or Equal)

整数测试操作实验

[root@localhost /opt] # who | wc -l
2
[root@localhost /opt] # [ $(who | wc -l) -gt 1 ]&& echo "ok"
ok
[root@localhost /opt] # [ $(who | wc -l) -gt 5 ]&& echo "ok"
[root@localhost /opt] # [ $(who | wc -l) -eq 5 ]&& echo "ok"
[root@localhost /opt] # [ $(who | wc -l) -lt 5 ]&& echo "ok"
ok

在这里插入图片描述
在这里插入图片描述

[root@localhost /opt] # free -m
              total        used        free      shared  buff/cache   available
Mem:           1823         778         151          17         894         804
Swap:          4095           0        4095
[root@localhost /opt] # free -m | grep -i "mem:"
Mem:           1823         778         150          17         894         804
[root@localhost /opt] # free -m | grep -i "Mem:"| awk '{print $4}'
150
[root@localhost /opt] # zb=`free -m | grep -i "Mem:"| awk '{print $4}'`
[root@localhost /opt] # echo $zb
150
[root@localhost /opt] # [ $zb -lt 500 ] && echo "警告:当前内存不足,内存为:${zb}M"
警告:当前内存不足,内存为:150M

在这里插入图片描述

在这里插入图片描述

字符串测试

格式1
[ 字符串1 =字符串2 ]
[ 字符串1 !=字符串2 ]

格式2:
[ -z 字符串 ]

常用的测试操作符

字符说明
=字符串内容相同
!=字符串内容不同,! 号表示相反的意思
-z字符串内容为空
-n判断是否有字符存在

字符串测试操作实验

测试当前用户名称

[root@localhost /opt] # [ $USER = "root" ] && echo true
true
[root@localhost /opt] # [ $USER != "root" ] && echo true

在这里插入图片描述
测试字符串

[root@localhost /opt] # read -p "yes/no: " ACK
yes/no: 
[root@localhost /opt] # echo $ACK

[root@localhost /opt] # [ -z $ACK ] && echo true
true
[root@localhost /opt] # read -p "yes/no: " ACK
yes/no: yes
[root@localhost /opt] # [ -z $ACK ] && echo true
[root@localhost /opt] # [ -n $ACK ] && echo true
true

在这里插入图片描述
在这里插入图片描述

逻辑测试

格式1:[ 表达式1 ] 操作符 [ 表达式2 ]

格式2:命令1 操作符 命令2 ...

常用的测试操作符

-a或&&:逻辑与,“而且”的意思

-o或||:逻辑或,“或者”的意思

!:逻辑否

逻辑测试操作实验

测试&&逻辑与运算符,当前面的表达式成立不会执行||后面的运算符,直接输出true
在这里插入图片描述
测试||运算符,前面表达式不成立,和表达式与的true执行失败,这时候会执行后面的运算||,输出false
在这里插入图片描述
除了使用(( ))两个小括号表示,也可以使用[[ ]]两个中括号表示,不过使用中括号,在<号或>号前面需要加上一个/转义符,这样才能表示
在这里插入图片描述
我们也可以使用变量来表示

设置一个变量值为5,表达这个变量不等于1而且不等于2,使用返回码查看这个表达式成不成立,成立输入返回码为0
在这里插入图片描述
除了&&我们还可以用-a,
在这里插入图片描述
我们试试使用&&写这样格式,结果报错,缺少[],我们加上[]表达式成立了,所以格式很重要
在这里插入图片描述
三元运算符表示

在这里插入图片描述

二、语句的结构

if语句结构

单分支结构

在这里插入图片描述

if 条件测试操作

     then 命令序列
     
fi

实验:使用if语句编写磁盘空间不足,设置个变量值为10,使用if编辑磁盘空间大于等于5警告空间不足
在这里插入图片描述

双分支结构

在这里插入图片描述

if 条件测试操作

    then 命令序列1
    
    else 命令序列2
    
fi    

实验:开启监听80端口,没有监听开启httpd服务,没有httpd服务安装并开启在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

多分支结构

在这里插入图片描述

if 条件测试操作1

    then命令序列1
    
elif条件测试操作2

    then命令序列2
else

命令序列3

fi

在这里插入图片描述

在这里插入图片描述

case语句结构

case多分支结构

在这里插入图片描述

case 变量值 in
模式1
    命令序列1
    ;;
模式2
    命令序列2
    ;;
    ....... 
*)
    默认命令序列
esac            

case语句和if语句不同,if语句是一个数值在脚本文件中一个个筛选,然后选择正确的条件测试,而case是直接根据数值选择相对的的命令序列,在写入脚本文件过多的情况下,case比if效率高些
在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值