美文网首页
11 - shell之case语句

11 - shell之case语句

作者: 舍是境界 | 来源:发表于2022-03-23 06:57 被阅读0次

    case语法格式

    • 检查、判断变量的取值
      • 效果类似于多分支的if语句
      • 如果与预设的值相匹配,则执行相应的操作
      • 命令序列最后必须以分号结尾
    case 变量 in
    模式1)
      命令序列1;;
    模式2)
      命令序列2;;
    ... ...
    *)
      默认命令序列
    esac
    

    case范例

    • 判断用户的输入
    #!/bin/bash
    read -p "请输入redhat|fedora:" key
    case $key in
    redhat)
      echo "fedora.";;
    fedora)
      echo "redhat.";;
    *)
      echo "必须输入redhat或fedora."
    esac
    
    • 判断用户的输入
    #!/bin/bash
    read -p "Are you sure?[y/n]:" sure
    case $sure in
    y|Y|yes|YES)
      echo "you enter $sure, OK";;
    n|N|no|NO)
      echo "you enter $sure,OVER";;
    *)
      echo "error";;
    esac
    

    数组

    • 数组也是一个变量,是一个有点特殊的变量
    • 存储多个数据的集合就是数组
    test=(11 22 33)
    echo ${test[0]}
    11
    
    echo ${test[1]}
    22
    
    
    • 石头剪刀布游戏
    #!/bin/bash
    game=(stone scissor cloth)
    num=$[RANDOM%3]
    computer=${game[$num]}
    #通过随机数获取计算机的出拳
    #出拳的可能性保存在一个数组中:game[0],game[1],game[2]
    echo "请根据下列提示选择您的出拳手势"
    echo "1.stone 石头"
    echo "2.scissor 剪刀"
    echo "3.cloth 布"
    
    read -p "请选择1-3:" person
    case $person in
    1)
      if [ $num -eq 0 ];then
        echo "平局"
      elif [ $num -eq 1 ];then
        echo "你赢"
      else
        echo "计算机赢"
      fi;;
    2)
      if [ $num -eq 1 ];then
        echo "平局"
      elif [ $num -eq 2 ];then
        echo "你赢"
      else
        echo "计算机赢"
      fi;;
    3)
      if [ $num -eq 2 ];then
        echo "平局"
      elif [ $num -eq 0 ];then
        echo "你赢"
      else
        echo "计算机赢"
      fi;;
    *)
      echo "输入非法,OVER"
    esac
    
    

    小结

    • case语法
    • 案例
      • 判断用户的输入信息
      • 石头剪刀布游戏

    相关文章

      网友评论

          本文标题:11 - shell之case语句

          本文链接:https://www.haomeiwen.com/subject/cgkudrtx.html