条件测试、if语句和case语句

条件测试、if语句和case语句

一.条件测试

1.test命令

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

格式一:test 条件表达式  
格式二:[ 条件表达式 ]
echo $?  若返回0则成立,返回其他数值则不成立。

2.文件测试

[ 操作符 文件或目录 ]
echo $?  若返回0则成立,返回其他数值则不成立。

常用的测试操作符

操作符 作用
-d 测试是否为目录(Directory)
-e 测试目录或文件是否存在(Exist)
-f 测试是否为文件(File)
-r 测试当前用户是否有权限读取(Read)
-w 测试当前用户是否有权限写入(Write)
-x 测试当前用户是否有权限执行(eXcute)

3.整数值比较

[ 整数1 操作符 整数2 ]

常用的测试操作符

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

4.字符串比较

格式一:[ 字符串 = 字符串 ][ 字符串 != 字符串 ]
格式二:[ -z 字符串 ][ -n 字符串 ]

常用的测试操作符

操作符 说明
= 字符串内容相同
!= 字符串内容不同
-z 字符串内容为空
-n 是否有字符串

5.逻辑测试

格式一:[ 表达式1 ] 操作符 [ 表达式2 ]
格式二:命令1 操作符 命令2

常用的测试操作符

操作符 说明
-a或&& 逻辑与,而且的意思,前后条件需都成立
-o或▕▕ 逻辑或,或者的意思,只需其中一个条件成立
逻辑否

-a 与 -o 用于格式二,&& 与▕▕ 用于格式一,&& 与▕▕ 可用于[[ ]]结构中,以上条件都是输出第一个符合条件的结果

二.if语句的结构

1.单分支结构

在这里插入图片描述

if   条件测试语句
   then  命令序列
fi

2.双分支结构

在这里插入图片描述

if  条件测试语句
   then  命令序列1
   else  命令序列2
fi

3.多分支语句

在这里插入图片描述

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

if语句测试题

提示用户输入内容,使用if 语句判断输入的内容是否为整数。再判断输入的内容是奇数还是偶数。

#!/bin/bash
read -p "输入一个整数:" number
expr $number + 1 &>/dev/null
if [ $? -eq 0 ]
 then

   if [ $number = 0 ]
    then
      echo "$number 是为非奇非偶的偶数"
    elif [ $(($number%2)) == 0 ]
    then
      echo "$number 是偶数"
     else
      echo "$number 是奇数"
    fi

 else
    echo "$number 不是整数"
fi

测试结果
在这里插入图片描述
在这里插入图片描述
提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误

#!/bin/bash
read -p "请输入你的成绩:" s
if [ "$s" -gt 0 -a "$s" -le 10 ] &> /dev/null
 then
   echo "恭喜你进入决赛"
  read -p "请输入你的性别:" x
   if [ "$x" =]
    then
     echo "恭喜你进入男子组决赛"
    elif [ "$x" =]
     then
     echo "恭喜你进入女子组决赛"
    else
     echo "输入错误,请重新输入"
  fi
  elif [ "$s" -gt 10 ] &> /dev/null
  then
    echo "你已被淘汰"
 else
   echo "输入错误,请重新输入"
fi

测试结果
在这里插入图片描述

三.case语句结构

case多分支结构

在这里插入图片描述

case  变量值  in

模式1)
  命令序列1
  ;;
模式2)
  命令序列2
  ;;
  …………
*)
  默认命令序列
esac

case语句测试题

用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录

#!/bin/bash
read -p "请输入文件:" name
case $1 in
  *.gz)
    if  [ -f $1 ]
    then
    tar -zxvf $1 -C /opt
    fi
  ;;
  *.bz2)
    if [ -f $1 ]
    then
    tar -jxvf $1 -C /opt
    fi
  ;;
  *)
    echo "文件格式错误"
esac

测试结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Desire_cure_/article/details/114382370