case语句使用于需要进行多重分支的应用情况

case分支判断结构

语法:

case 变量名称 in

     value1)

         statement

         statement

         ;;

     value2)

         statement

         statement

         ;;

     *)

         statement

         statement

         ;;     

esac

case语句结构特点如下:

case行尾必须为单词 in 每个模式必须以右括号 ) 结束

双分号 ;; 表示命令序列结束

case语句结构特点如下:

匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。

最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列。

编写脚本,判断用户输入的字符串

  1. #!/bin/bash
  2. #
  3. read -p "输入字符串:" str
  4. case $str in
  5.      linux|Linux)
  6.         echo "windows"
  7.         ;;
  8.      windows|Windows)
  9.         echo "linux"
  10.         ;;
  11.      *)
  12.         echo "other"
  13.         ;;
  14. esac

运行效果:

  1. [root@wei case]# bash 1.sh 
  2. 输入字符串:linux
  3. windows

特殊变量:

   
   位置变量

       $1,$2,$3...........$9,$1{10}

       

        $1:命令的第1个参数

             

        $0  命令本身

        

        $#  命令参数的个数

        
使用位置变量

  1. #!/bin/bash
  2. #
  3. case $1 in
  4.         linux|Linux)
  5.                 echo "windows"
  6.                 ;;
  7.         windows|Windows)
  8.                 echo "linux"
  9.                 ;;
  10.         *)
  11.                 echo "other"
  12. esac

执行效果

  1. [root@wei case]# ./2.sh linux
  2. windows

判断字符是为空

  1. #!/bin/bash
  2. #
  3. if [ -z $1 ];then #判断字符串是否为空
  4.     echo "使用:./2.sh{linux/windows}"
  5.     exit 9
  6. fi
  7. case $1 in
  8.     linux|Linux)
  9.         echo "windows"
  10.         ;;
  11.     windows|Windows)
  12.         echo "linux"
  13.         ;;
  14.     *)
  15.         echo "other"
  16. esac

执行效果

  1. [root@wei case]# ./2.sh 
  2. 使用:./2.sh{linux/windows}

$0  命令本身    

$#  命令参数的个数

示例:

  1. #!/bin/bash
  2. #
  3. if [ $# -ne 1 ];then
  4.     echo "使用:$0{linux/windows}"
  5.     exit 9
  6. fi
  7. case $1 in
  8.     linux|Linux)
  9.         echo "windows"
  10.         ;;
  11.     windows|Windows)
  12.         echo "linux"
  13.         ;;
  14.     *)
  15.         echo "other"
  16. esac

执行效果:

  1. [root@wei case]# /shell/case/2.sh 
  2. 使用:/shell/case/2.sh{linux/windows}
  3. [root@wei case]# ./2.sh 
  4. 使用:./2.sh{linux/windows}        

去除文件所在的路径名:

basename [路径文件]

  1. [root@wei case]# basename /etc/fstab 
  2. fstab

获取文件所在的路径名:

dirname [路径文件]

  1. [root@wei case]# dirname /etc/fstab 
  2. /etc

脚本

  1. #!/bin/bash
  2. #
  3. if [ $# -ne 1 ];then
  4.     echo "使用:$(basename $0){linux/windows}"
  5.     exit 9
  6. fi
  7. case $1 in
  8.     linux|Linux)
  9.         echo "windows"
  10.         ;;
  11.     windows|Windows)
  12.         echo "linux"
  13.         ;;
  14.     *)
  15.         echo "other"
  16. esac
  17.         

执行效果


  1. [root@wei case]# /shell/case/2.sh 
  2. 使用:2.sh{linux/windows}

Linux shell case条件判断及位置变量的更多相关文章

  1. Linux shell if条件判断2

    前面介绍linux shell的if判断的语法,现在再补充一点. Linux shell if条件判断1 分支判断结构     if , case   下面两个结构语法,已经在前面有过示例. 结构1: ...

  2. Linux Shell编程 条件判断语法

    if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...

  3. Linux shell if条件判断1

    shell 逻辑控制语句:            分支判断结构        if        case     循环结构         for         while         unt ...

  4. 我们一起来学Shell - shell的条件判断

    文章目录 Shell 条件测试语法 符号说明 Shell 测试表达式 文件测试表达式 字符串测试表达式 整数操作符 逻辑操作符 测试表达式的区别总结 Shell 条件判断之if语句 单分支 IF 条件 ...

  5. shell中条件判断if中的-z到-d的意思

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...

  6. shell中条件判断if中的-z到-d

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 ...

  7. Linux之shell编程条件判断-if,while,for,case

    if 语法格式 if condition then statements [elif condition then statements] [else statements ] fi 示例 vi if ...

  8. shell编程学习笔记(九):Shell中的case条件判断

    除了可以使用if条件判断,还可以使用case 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script08.sh 开始编写scrip ...

  9. shell编程 条件判断式----利用 case ..... esac 判断

    条件判断式----利用 case ..... esac 判断 case  $变量名称 in   <==关键词为 case ,还有变量前有钱字号 "第一个变量内容")   &l ...

随机推荐

  1. electron自定义桌面应用的外观

    1. 控制应用视窗大小 构建桌面应用时,我们要考虑我们的应用程序需要如何让用户来使用,那么我们需要提供一个视窗,那么该视窗可以最大化展示,也可以最小化展示,当然我们也希望可以全屏运行. 在electr ...

  2. ProceedingJoinPoint获取实现类接口上的注解

    使用aspectj处理拦截aop,需要获取实现类接口上的注解 public Object around(ProceedingJoinPoint pjp) throws Throwable{ long ...

  3. postgres判断字符串是否为时间,数字

    时间判断函数定义: -- FUNCTION: public.isdate(character varying) -- DROP FUNCTION public.isdate(character var ...

  4. [LeetCode] 10. Regular Expression Matching 正则表达式匹配

    Given an input string (s) and a pattern (p), implement regular expression matching with support for  ...

  5. UDF——在udf当中添加几个有意思的宏

    很多人的udf都不是自己写的,直接从网上复制粘贴的,编译的时候经常报错.我编写了下面这段示例代码: 我们使用小软件编译: https://www.cnblogs.com/liusuanyatong/p ...

  6. [原创]浅谈在创业公司对MVP的理解

    [原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...

  7. JavaIO学习:打印流

    打印流 打印流是输出信息最方便的类,注意包含字节打印流:PrintStream和字符打印流:PrintWriter. 打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数,字符 ...

  8. 【JVM】jmap命令详解----查看JVM内存使用详情

    linux获取java进程PID: https://www.cnblogs.com/sxdcgaq8080/p/10734752.html 如果命令使用过程中报错,可能解决你问题的方案: https: ...

  9. 深入V8引擎-AST(5)

    懒得发首页了,有时候因为贴的代码太多会被下,而且这东西本来也只是对自己学习的记录,阅读体验极差,所以就本地自娱自乐的写着吧! 由于是解析字符串,所以在开始之前介绍一下词法结构体中关于管理字符串类的属性 ...

  10. .NET MVC 支付宝支付(即时到账)

    已经好久没有搞过.NET了,朋友有一个网站 ,需要接入支付宝功能,重新对接了一下. 1.开发前,需要一个企业支付宝账号登录,获取 PID和 配置密钥 官方文档:https://docs.open.al ...