(七)Shell 脚本应用(二):条件测试与判断语句详解

一、条件测试

  1. 条件测试结果类型和测试方法

    • 条件测试结果
      • 0:条件为真匹配。
      • 非 0:条件为假不匹配。
    • 条件测试的方法
      • test [条件]:第一种 test 命令测试。
      • [ ]:第二种测试。
  2. 文件条件测试

    • 文件条件测试选项
      • -r:测试是否有读取权限。
      • -w:测试是否有写入权限。
      • -x:测试是否有执行权限。
      • -d:测试是否是一个目录。
      • -f:测试是否是一个文件。
      • -e:测试是否存在。
    • 测试文件目录
      • 使用命令[root@centos01 ~]# test -f /etc/sysconfig/network-scripts/ifcfg-ens32测试是否是文件。
      • 使用命令[root@centos01 ~]# [ -d /etc ]测试是否是目录。
      • 使用命令[root@centos01 ~]# echo $?显示测试结果。
    • 条件测试结果为真显示提示信息
      • 使用命令[root@centos01 ~]# [ -d /etc ] && echo "是一个目录"
  3. 整数比较

    • 比较测试选项
      • -eq:等于(=)。
      • -ne:不等于(=!)。
      • -gt:大于(>)。
      • -lt:小于(<)。
      • -ge:大于等于。
      • -le:小于等于。
    • 测试
      • 使用命令[root@centos01 ~]# [ 10 -ge 5 ] && echo "yes"
  4. 字符串比较

    • 字符串比较选项
      • =:等于。
      • !=:不等于。
      • -z:判断是否为空。
    • 判断是否支持中文
      • 使用命令[root@centos01 ~]# [ $LANG = zh_CN.UTF-8 ] && echo "支持中文"
  5. 逻辑判断

    • 逻辑判断选项
      • -and:而且,两个结果必须为真。
      • -or:两个结果匹配任意一个。
      • !:取反。
    • 逻辑判断使用
      • 使用命令[root@centos01 ~]# [ -d /etc -a -f /etc/sysconfig/network-scripts/ifcfg-ens32 ] && echo "yes"
      • 使用命令[root@centos01 ~]# [ -d /etc -o -d /etc/sysconfig/network-scripts/ifcfg-ens32 ] && echo "yes"
      • 使用命令[root@centos01 ~]# [ -d /etc ] && [ -f /etc/sysconfig/network-scripts/ifcfg-ens32 ] && echo "yes"
      • 使用命令[root@centos01 ~]# [ -d /etc ] || [ -d /etc/sysconfig/network-scripts/ifcfg-ens32 ] && echo "yes"

二、if 判断的基本使用

  1. if 单分支判断
    • if 单分支判断语法结构

收起

plaintext

复制

     if 条件
     then
        命令;
     fi

  • 编写脚本判断目录是否存在,存在则创建退出
    使用命令[root@centos01 ~]# vim./mkdir.sh创建脚本,内容为#!/bin/bashdir="/hb3066"if [! -d $dir ]thenmkdir $dirfi
  • 执行脚本:使用命令[root@centos01 ~]# sh./mkdir.sh

  1. if 双分支
    • 双分支语法结构

收起

plaintext

复制

     if 条件
     then
        命令 1;
     else
        命令 2;
     fi

  • 测试计算机连通性
    使用命令[root@centos01 ~]# vim./ping.sh创建脚本,内容为#!/bin/bashread -p "请输入 IP 地址:" ipping -c 3 -i 0.3 -w 3 $ip &> /dev/nullif [ $? -eq 0 ]thenecho "HOST $ip UP."elseecho "HOST $ip down."fi
  • 测试:使用命令[root@centos01 ~]# sh./ping.sh

  1. 多分枝
    • 多分枝语法结构

收起

plaintext

复制

     if 条件 1
     then 
        命令序列 1;
     elif 条件 2
     then 
        命令序列 2;
     else
        命令序列 3;
     fi

  • 测试考试成绩
    使用命令[root@centos01 ~]# vim./test.sh创建脚本,内容为#!/bin/bash/read -p "请输入考试成绩 1 - 100 分:" testif [ $test -ge 85 ] && [ $test -le 100 ]thenecho "本次考试成绩为$test 分,恭喜考试成绩优秀."elif [ $test -ge 70 ] && [ $test -le 85 ]thenecho "本次考试成绩为$test 分,考试成绩合格."elseecho "本次考试成绩为$test 分,考试什么也不是重新学习."fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值