Linux shell编程之条件判断

过了好久好久,终于舍得发博客了。今天给大伙讲一下Linux的shell中判断条件的语句。

先来看第一种,判断文件类型

在这里插入图片描述
其中黑色字体的文件均为特殊文件,一般不太常用,而蓝色字体的三个判断非常常见。

[root@centos-7 tmp]# [ -d /tmp ]          //注意,中括号两端一定要有空格不然会报错
[root@centos-7 tmp]# echo $?              //该命令一般不直接输出的,可以通过$?来查看执行结果,
0                                         //0为正确执行,1为错误执行
[root@centos-7 tmp]#[ -d /root/adfa ]
[root@centos-7 tmp]# echo $?
1
[root@centos-7 tmp]# [ -d /root ] && echo '存在该目录' || echo '不存在该目录'
存在该目录
[root@centos-7 tmp]# [ -d /root/adfa ] && echo '存在该目录' || echo '不存在该目录'
不存在该目录

除了判断文件类型,还可以判断文件权限

在这里插入图片描述

[root@centos-7 ~]# ls -l lab1
-rw-r--r--. 1 root root 8 7月  19 17:03 lab1
[root@centos-7 ~]# [ -w /root/lab1 ] && echo '具有写权限' || echo '不具有写权限'
具有写权限
[root@centos-7 ~]# [ -x /root/lab1 ] && echo '具有执行权限' || echo '不具有执行权限'不具有执行权限

这里要注意,该判断仅能判断是否有写权限,但是要具体到那些成员有写权限,那还是得自己写脚本。

[root@centos-7 ~]# chmod 645 lab1
[root@centos-7 ~]# ll lab1
-rw-r--r-x. 1 root root 8 7月  19 17:03 lab1
[root@centos-7 ~]# ll /root/lab1 | grep '^.*x. ' && echo '其他人有执行权限' || echo  '其他人没有执行权限'
-rw-r--r-x. 1 root root 8 7月  19 17:03 /root/lab1
其他人有执行权限
[root@centos-7 ~]# chmod 644 lab1
[root@centos-7 ~]# ll lab1
-rw-r--r--. 1 root root 8 7月  19 17:03 lab1
[root@centos-7 ~]# ll /root/lab1 | grep '^.*x. ' && echo '其他人有执行权限' || echo  '其他人没有执行权限'
其他人没有执行权限

除了判断文件类型,还可以判断文件属性

在这里插入图片描述

整数之间判断

在这里插入图片描述
大家可以这样记,e:equal,n:not,lt:less than,gt:greater than

[root@centos-7 ~]# [ 11 -eq 11 ] && echo '相等' || echo '不相等'
相等
[root@centos-7 ~]# [ 11 -eq 1 ] && echo '相等' || echo '不相等'
不相等
[root@centos-7 ~]# [ 11 -gt 1 ] && echo '大于' || echo '小于等于'
大于
[root@centos-7 ~]# [ 11 -gt 11 ] && echo '大于' || echo '小于等于'
小于等于
[root@centos-7 ~]# a=1
[root@centos-7 ~]# b=2
[root@centos-7 ~]# [ $a -gt $b ] && echo '大于' || echo '小于等于'
小于等于
[root@centos-7 ~]# c=$(( $a + $b ))
[root@centos-7 ~]# [ $c -gt $b ] && echo '大于' || echo '小于等于'
大于
[root@centos-7 ~]# echo $c
3
[root@centos-7 ~]# [ $c -eq $(($b + $a)) ] && echo '等于' || echo '不等于'
等于

希望这些运算大家要熟练掌握,毕竟这是我们以后写脚本基础中的基础

字符之间的比较

在这里插入图片描述

多重判断条件

在这里插入图片描述

[root@centos-7 ~]# [ $c -eq $(($b + $a)) -a $c -eq 3 ] && echo '都等于' || echo '至少一个不等于'
都等于
[root@centos-7 ~]# [ $c -eq $(($b + $a)) -a $c -eq 1 ] && echo '都等于' || echo '至少一个不等于'
至少一个不等于

接下来讲解shell中的if语句,格式如下

先来看个简单的例子,这是一个单分支的if判断语句

#!/bin/bash
#欢迎关注MrChen666的博客
#https://blog.csdn.net/MrChen666

read -p "请输入一个整数:" number

if [ $number -gt 0 ]
then
        echo "您输入的是一个正数"
fi
exit 0

大家再来看个多分枝的判断语句

#!/bin/bash
#欢迎关注MrChen666的博客
#https://blog.csdn.net/MrChen666

read -p "请输入一个整数:" number

if [ "$number" -gt 0 ]  #这里要注意,当处理字符有空格时候,就要给变量名加上双引号,增加程序的可执行性能
then
        echo "您输入的是一个正数"
elif [ "$number" -eq 0 ]
then
        echo "您输入的是个0"
else
        echo "您输入的是个负数"
fi

exit 0

这是在刚刚基础之上的一个多分枝判断语句,执行如下:

[root@centos-7 ~]# ./if.sh
请输入一个整数:12
您输入的是一个正数
[root@centos-7 ~]# ./if.sh
请输入一个整数:0
您输入的是个0
[root@centos-7 ~]# ./if.sh
请输入一个整数:-23
您输入的是个负数

shell的判断语句非常简单,但是要大家勤于联系,把格式转化为肌肉记忆,这样才不怕忘记!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值