codecamp

Bash case语句

case 语句通常用于简化具有多种不同选择的复杂条件语句,使 Bash 脚本更具可读性,并更易于维护。

基础

语法:

case expression in
    pattern_1)
        statements
        ;;
    pattern_2)
        statements
        ;;
    pattern_3|pattern_4|pattern_5)
        statements
        ;;
    pattern-n)
        statements
        ;;
    *)
        statements
        ;;
esac

注:
- 可以运用|分隔的多个模式运算符,运算符指示模式列表的终止。
- pattern) statements这样的模式语句被称为子句,须以;;终止。
- *用于定义默认情况下的最终模式。当用作最后一种匹配模式时,它作为默认匹配。

运作规则:

  1. case 语句扩展表达式并尝试与每个包含的模式进行匹配。若找到匹配项,将执行与该项连接的语句直至;;结束。
  2. 若匹配项成功,case以最后执行的语句的退出状态终止。
  3. 若匹配项失败,case的退出状态为零。
  4. 若写入了默认的*模式,那么在匹配其他项失败后将执行它。

示例:

#!/bin/bash


echo "Which Operating System are you using?"
echo "Windows, Android, Chrome, Linux, Others?"
read -p "Type your OS Name:" OS


case $OS in
    Windows|windows|window|win)
        echo "That's common. You should try something new."
        echo
        ;;
    Android|android)
        echo "This is my favorite. It has lots of applications."
        echo
        ;;
    Chrome|chrome)
        echo "Cool!!! It's for pro users. Amazing Choice."
        echo
        ;;
    Linux|linux)
        echo "You might be serious about security!!"
        echo
        ;;
    *)
        echo "Sounds interesting. I will try that."
        echo
        ;;
esac

执行后得到以下结果:

which Operating System are you using?
Windows, Android, Chrome, Linux, Others?
Type your OS Name:linux
You might be serious about security!!
Bash else-if语句
Bash for循环
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }