shell脚本----条件语句(if语句和case语句)

一、条件测试

  • test命令:测试表达式是否成立,若成立返回0,否则返回其他数值
    格式1:test 条件表达式
    格式2:[ 条件表达式 ]

1、文件测试

  • 格式:[ 操作符 文件或者目录 ]
    -d 测试是否为目录(director)
    -e 测试目录或文件是否存在(exist)
    -f 测试是否为文件(file)
    -r 测试当前用户是否有读的权限(read)
    -w 测试当前用户是否有写的权限(write)
    -x 测试是否有执行的权限(eXcete)
[root@localhost /]# cd /root
[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]# ll
总用量 12
-rw-------. 1 root root 2053 7   8 08:36 anaconda-ks.cfg
-rw-r--r--. 1 root root 2101 7   8 08:37 initial-setup-ks.cfg
-rw-r--r--. 1 root root 1276 7  14 19:26 ks.cfg
drwxr-xr-x. 2 root root    6 7   8 08:37 公共
drwxr-xr-x. 2 root root    6 7   8 08:37 模板
drwxr-xr-x. 2 root root    6 7   8 08:37 视频
drwxr-xr-x. 2 root root    6 7   8 08:37 图片
drwxr-xr-x. 2 root root    6 7   8 08:37 文档
drwxr-xr-x. 2 root root    6 7   8 08:37 下载
drwxr-xr-x. 2 root root    6 7   8 08:37 音乐
drwxr-xr-x. 2 root root    6 7   8 08:37 桌面
[root@localhost ~]# test -f ks.cfg 
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d 图片 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -f ks.cfg ]&& echo "yes"  ##  &&后面跟的是输出内容,判断为则输出否则什么也不输出
yes
[root@localhost ~]# 

2、整数测试

  • 格式 [ 整数1 操作符 整数2 ]
    -eq 等于
    -ne 不等于
    -gt 大于
    -lt 小于
    -le 小于或等于
    -ge 大于或等于
    ! 取反
[root@localhost ~]# [ 100 -le 120 ]&& echo "yes"  
yes            ##  100小于120 所以输出yes
[root@localhost ~]# [ 100 -le 12 ]&& echo "yes"
[root@localhost ~]#   ##   判断不正确  所以什么都不输出

3、字符串测试

格式:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
[ -z 字符串 ]
操作符:= 字符串内容相同
!= 字符串内容不相同
-z 字符串内容为空

4、逻辑测试

格式:[表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
-a 或 && 逻辑与 而且的意思
-o 或|| 逻辑或 或者的意思
! 逻辑否

二、if语句

1、if单分支语句

if  [  条件测试操作  ]
  then   命令序列
fi

在这里插入图片描述

示例:判断如果 1.txt 是文件则删除它,否则退出
[root@localhost opt]# ls
1.txt   adc.sh  bak.sh                 caiquan.sh  ping.sh  sum.sh     test1.sh
abc.sh  a.sh    beifen-1594976568.tgz  first.sh    rh       test01.sh  test2.sh
[root@localhost opt]# vim a.sh
[root@localhost opt]# sh a.sh 
[root@localhost opt]# ls
abc.sh  a.sh    beifen-1594976568.tgz  first.sh  rh      test01.sh  test2.sh
adc.sh  bak.sh  caiquan.sh             ping.sh   sum.sh  test1.sh
[root@localhost opt]# vim a.sh

#!/bin/bash
if [ -f /opt/1.txt ]
  then $(rm -rf /opt/1.txt)
fi

2、if双分支语句

格式  if  [  条件测试操作  ]
        then   命令序列1
        else   命令序列2
     fi

在这里插入图片描述

[root@localhost opt]# vim a.sh

#!/bin/bash
if [ -f /opt/a.test ]
  then $(rm -rf /opt/1.txt)
else echo "这不是一个文件,无法删除"
fi
[root@localhost opt]# sh a.sh
这不是一个文件,无法删除

3、if多分支语句

格式    if  [  条件测试操作1  ]
          then   命令序列1
       elif  [  条件测试操作2  ]
          then   命令序列2
       else   命令序列3
       fi
#!/bin/bash
read -p "请输入你的赛跑时间:" S
if [ $S -le 10 ] && [ $S -ge 0 ]
then
  read -p "恭喜你进入决赛,你是男生还是女生?" sex
  if [ $sex = "男生" ] | [ $sex = "男" ]
  then
    echo "恭喜你进入男子组决赛"
  else
    echo "恭喜你进入女子组决赛"
  fi
else
 echo "未进入决赛,下次努力"
fi

三、case语句

多分支结构:case  变量值  in
          模式1
              命令序列1
              ;;
          模式2
              命令序列2
              ;;
               ......
           *
             默认命令序列
          esac
#!/bin/bash
read -p "输入一个成绩:" num
case $num in
 8[0-9]|9[0-9]|100)
   echo "成绩优秀"
   ;;
 6[0-9]|7[0-9])
   echo "成绩合格"
   ;;
 [0-5][0-9])
   echo "你等着挨打吧!"
   ;;
 *)
   echo "请输入0-100的数字,谢谢!"
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值