shell编程之case语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之case语句相关的知识,希望对你有一定的参考价值。

bash脚本编程:


 case语句:

  

  多分支if语句:

   if CONDITION1; then

    分支1

   elif  CONDITION2; then

    分支2

   ...

   else CONDITION; then

    分支n

   fi

   

  示例1:显示一个菜单给用户;

   cpu) display cpu information

   mem) display memory information

   disk) display disks information

   quit) quit

   

   要求:(1) 提示用户给出自己的选择;

       (2) 正确的选择则给出相应的信息;否则,则提示重新选择正确的选项;

       

    #!/bin/bash

    #

    cat << EOF

    cpu) display cpu information

    mem) display memory infomation

    disk) display disks information

    quit) quit

    ===============================

    EOF


    read -p "Enter your option: " option


    while [ "$option" != "cpu" -a "$option" != "mem" -a "$option" != "disk" -a "$option" != "quit" ]; do

     echo "cpu, mem, disk, quit"

     read -p "Enter your option again: " option

    done


    if [ "$option" == "cpu" ]; then

     lscpu

    elif [ "$option" == "mem" ]; then

     free -m

    elif [ "$option" == "disk" ]; then

     fdisk -l /dev/[hs]d[a-z]

    else

     echo "quit"

     exit 0

    fi  

 

   case语句的语法格式:

    

    case  $VARAIBLE  in  

    PAT1)

     分支1

     ;;

    PAT2)

     分支2

     ;;

    ...

    *)

     分支n

     ;;

    esac

    

    case支持glob风格的通配符:

     *:任意长度的任意字符;

     ?:任意单个字符;

     []:范围内任意单个字符;

     a|b:a或b;

    

   示例:写一个服务框架脚本;

    $lockfile,  值/var/lock/subsys/SCRIPT_NAME

    

    (1) 此脚本可接受start, stop, restart, status四个参数之一;

    (2) 如果参数非此四者,则提示使用帮助后退出;

    (3) start,则创建lockfile,并显示启动;stop,则删除lockfile,并显示停止;restart,则先删除此文件再创建此文件,而后显示重启完成;status,如果lockfile存在,则显示running,否则,则显示为stopped.

    

     #!/bin/bash

     #

     # chkconfig: - 50 50

     # description: test service script

     #

     prog=$(basename $0)

     lockfile=/var/lock/subsys/$prog


     case $1  in

     start)

      if [ -f $lockfile ]; then

       echo "$prog is running yet."

      else

       touch $lockfile 

       [ $? -eq 0 ] && echo "start $prog finshed."

      fi

      ;;

     stop)

      if [ -f $lockfile ]; then

       rm -f $lockfile

       [ $? -eq 0 ] && echo "stop $prog finished."

      else

       echo "$prog is not running."

      fi

      ;;

     restart)

      if [ -f $lockfile ]; then

       rm -f $lockfile

       touch $lockfile

       echo "restart $prog finished."

      else

       touch -f $lockfile

       echo "start $prog finished."

      fi

      ;;

     status)

      if [ -f $lockfile ]; then

       echo "$prog is running"

      else

       echo "$prog is stopped."

      fi

      ;;

     *)

      echo "Usage: $prog {start|stop|restart|status}"

      exit 1

     esac

   


以上是关于shell编程之case语句的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程Shell中多分支case条件语句

shell编程之函数和case多条件分支语句

shell编程之case语句

Shell编程之case语句与循环语句

shell编程之case分支语句,for循环语句和while循环语句

Shell编程之case语句与循环语句