首页 > 系统相关 >shell 分支case语句

shell 分支case语句

时间:2023-11-11 13:32:17浏览次数:32  
标签:case 语句 shell bar server sh foo

case 语句是 shell 中流控制的第二种方式,语法如下:  

case $变量 in

    pattern1)

         list1

         ;;                     ---------------------结尾。

    pattern2)

         list2

         ;;

    ... ...

    patternN)

         listN

        ;;

   *)                       --------------------> 如果前面命令没有执行成功那么执行下面这个

        list*

        ;;

esac


命令;;表明流应该跳转到case语句的最后,类似C语言中的break指令。

第一行: 声明case关键字调用case语法, 紧跟的“变量”一般为用户的输入值, in代表从下方的各个模式进行匹配  

第2-4行: 匹配到“pattern1”后进行命令的输出或执行, pattern1: 一般为字符或数值

第11-12行: 当用户输入的字符不存在匹配模式时, 直接执行或打印*)下的命令或语句



实例1:

[root@linux-server script]# vim foo.sh

#!/usr/bin/env bash

case $1 in

       foo)

       echo "bar"

       ;;

       bar)

       echo "foo"

       ;;

       *)

       echo "Usage:$0 '{foo|bar}'"

       ;;

esac

[root@linux-server script]# chmod +x foo.sh

[root@linux-server script]# ./foo.sh bar


练习:建立脚本case.sh,当执行时,要求我们在键盘输入适当的值(one|two|three),当输入正确时并打印,当输入错误 时会提示你,应该输入正确的值。

标签:case,语句,shell,bar,server,sh,foo
From: https://blog.51cto.com/u_16317072/8317289

相关文章

  • 当一个值为false的Boolean对象放到条件语句当中的时候,Boolean对象的值会被当作true来
    下面这段程序的显示结果是?varx=newBoolean(false);if(x){alert('hi');}vary=Boolean(0);if(y){alert('hello');}hiif(x)这里期望x是一个布尔类型的原始值,而x是一个对象,任何对象转为布尔值,都为得到true(切记!在JS中,只有0,-0,NaN,"",null,undefined......
  • 由于没有使用break语句,在成功匹配后,会继续往下执行后面的case语句
    执行以下程序后,x的值为3varx=0;switch(++x){case0:++x;case1:++x;case2:++x;}官方解析:++x是前置自增,也就是先自增加1,再将x返回,所以switch表达式的值为1,匹配第二个case语句,同样对x进行前置自增,x的值变为2,由于没有使用break语句,在成功......
  • 输出瑞年,if语句后面加“;”导致语句失效
    输出1000-2000年之间的瑞年判断条件:(1)能被4整除但不能被100整除;(2)能被400整除#include<stdio.h>intmain(){ inti; for(i=1000;i<=2000;i++) { if(i%4==0&&i%100!=0) { printf("%d",i); } if(i%400==0)//开始这里加了";",结果输出了所有i值,if语句后加分号,只......
  • shell计算命令
    shell计算命令expr命令,表达式求值字符串操作exprlength字符串#计算字符串长度exprsubstr字符串startend#截取字符串exprindex字符串需要查找的字符#获取第一个字符在字符串中第一次出现的位置,从1开始计数exprmatch字符串正则表达式#正则表达式匹配......
  • Shell中的for与while循环结构语法
    1for循环语法结构如下:for变量名in值1值2值3        #值的数量决定循环任务的次数do命令序列done1.1for循环的基本语法格式#编写脚本,进行测试[root@localhostopt]#vimfor01.sh#!/bin/bashforiinabcdoecho"helloworld"done[root@loca......
  • 注意break除了用于中断循环以及switch语句,还可以用于标签化语句的中断
    请问以下JS代码的输出结果以及变量i的值是?vari=100;functionfoo(){bbb:try{console.log("position1");returni++;}finally{breakbbb;}console.log("position2");returni;}foo();Aposition1、posit......
  • JMeter进阶使用变量及BeanShell 预处理程序实现复杂调试
    JMeter进阶使用变量及BeanShell预处理程序实现复杂调试有一些测试需要做一些预处理程序才能做http请求,在JMeter下可以通过使用参数+BeanShell预处理程序加工后再发起请求即可。例oauth服务需要通过username,password,client_id,client_secret,grant_type进行请求,这里的密码涉及安......
  • xshell终端——多个窗格同步输入——xshell同时控制多个窗口的快捷方式
    参考:https://blog.csdn.net/m0_58347801/article/details/129551382  ========================   突发发现了终端的另类用法,就是多个窗格同步输入的方法,虽然说这个方法平时确实没啥用,但是突然用到了发现还不赖。 发现在配置Hadoop集群的时候这个操作还真不赖。......
  • [20231109]bash shell快捷键alt+number的问题.txt
    [20231109]bashshell快捷键alt+number的问题.txt--//前一阵子,我想实现12行合并1行的输出,理论讲要使用paste命令加入12个-.输入命令时候要数输入了多少-.我知道bashshell有一--//个快捷键alt+number可以产生连续输入某个字符,但是我一直不知道如何关掉这个功能.有时候误触发这......
  • 语句var arr=[a,b,c,d];执行后,数组arr中每项都是一个整数,下面得到其中最大整数语句正
    语句vararr=[a,b,c,d];执行后,数组arr中每项都是一个整数,下面得到其中最大整数语句正确的是哪几项?AMath.max(arr)BMath.max(arr[0],arr[1],arr[2],arr[3])CMath.max.call(Math,arr[0],arr[1],arr[2],arr[3])DMath.max.apply(Math,arr)正确答案:BCDA选项错误......