`

我使用过的Linux命令之case - Bash的多分支判断语句

阅读更多

我使用过的Linux命令之case - Bash的多分支判断语句

本文链接:http://codingstandards.iteye.com/blog/781017    (转载请注明出处)

 

用途说明

case结构用于多种情况的条件判断。类似于其他编程语言中的switch/case语句,但从语法形式上讲,有很大的不同。

常用格式

case 字符串 in

    模式)

        语句

        ;;

    模式2 | 模式3)

         语句

         ;;

    *)

         默认执行的 语句

         ;;

esac

提示:esac就是case反过来写。

使用示例

示例一

show_baby() {
    case $1 in
	    男 | M)
		    echo "是位小少爷"
			;;
		女 | F)
		    echo "是位小千金"
			;;
		*)
		    echo "有没有搞错"
			;;
	esac
}

show_baby 男
show_baby M
show_baby 女
show_baby F
show_baby 0

 

[root@jfht ~]# show_baby() {
>     case $1 in
>     男 | M)
>     echo "是位小少爷"
> ;;
> 女 | F)
>     echo "是位小千金"
> ;;
> *)
>     echo "有没有搞错"
> ;;
> esac
> }
[root@jfht ~]#
[root@jfht ~]# show_baby 男
是位小少爷
[root@jfht ~]# show_baby M
是位小少爷
[root@jfht ~]# show_baby 女
是位小千金
[root@jfht ~]# show_baby F
是位小千金
[root@jfht ~]# show_baby 0
有没有搞错
[root@jfht ~]#

 

示例二 init脚本

#!/bin/bash
#
#       /etc/rc.d/init.d/atd
#
# Starts the at daemon
#
# chkconfig: 345 95 5
# description: Runs commands scheduled by the at command at the time \
#    specified when at was run, and runs batch commands when the load \
#    average is low enough.
# processname: atd

# Source function library.
. /etc/init.d/functions

test -x /usr/sbin/atd || exit 0

RETVAL=0

#
#       See how we were called.
#

prog="atd"

start() {
        # Check if atd is already running
        if [ ! -f /var/lock/subsys/atd ]; then
            echo -n $"Starting $prog: "
            daemon /usr/sbin/atd
            RETVAL=$?
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/atd
            echo
        fi
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc /usr/sbin/atd
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/atd
        echo
        return $RETVAL
}


restart() {
        stop
        start
}

reload() {
        restart
}

status_at() {
        status /usr/sbin/atd
}

case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload|restart)
        restart
        ;;
condrestart)
        if [ -f /var/lock/subsys/atd ]; then
            restart
        fi
        ;;
status)
        status_at
        ;;
*)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $?
exit $RETVAL
 

[root@smsgw root]# ls -l /etc/init.d/atd
-rwxr-xr-x    1 root     root         1176 2004-10-06  /etc/init.d/atd
[root@smsgw root]# service atd
Usage: /etc/init.d/atd {start|stop|restart|condrestart|status}

[root@smsgw root]# service atd status
atd (pid 1899) is running...

[root@smsgw root]# service atd restart
Stopping atd:                                              [  OK  ]
Starting atd:                                              [  OK  ]
[root@smsgw root]#

 

问题思考

1. case命令中的模式可以有哪些?

2. 总结一下init脚本的写法。

相关资料

【1】Bash Guide for Beginners 7.3. Using case statements    7.3. 使用case语句

【2】鸟哥的私房菜 利用 case ..... esac 判斷

【3】Unix/Linux shell程序设计-<控制结构>-case语句 - 日志 - neverTheSame - 编程中国

 

返回 我使用过的Linux命令系列总目录

 

1
0
分享到:
评论

相关推荐

    bash教程-命令语法

    - `case` 用于模式匹配的多分支选择结构。 - **函数与脚本**: - `function` 定义可复用的代码块。 - `source` 加载并执行另一个脚本文件。 - `.` (点操作符) 与`source`功能相同。 - **输入输出重定向**: -...

    Bash shell 学习笔记

    - **历史记录**:Bash会自动记录用户执行过的命令,方便后续查找和重复使用。 #### 12. 杂项 - **12.1 set命令和选项**:用于设置Bash的行为和选项。 - **12.2 shopt命令和选项**:用于更改Bash的可选行为。 - **...

    Linux Bash编程

    - **分支结构**:`case`语句用于多分支选择。 4. **函数** - **定义函数**:`function func_name() { commands; }`,在脚本或命令行中定义函数。 - **调用函数**:使用函数名,如`func_name`。 5. **输入/输出...

    Linux常用命令和管理09-shell之脚本编程条件判断及逻辑运算1

    在Bash 4及以上版本,可以使用更现代的关键字`[[ EXPR ]]`,它提供了更多的测试选项和灵活性。 整型测试主要用于整数比较,包括`-gt`(大于)、`-lt`(小于)、`-ge`(大于等于)、`-le`(小于等于)和`-eq`(等于...

    bash4.0-中文文档

    3. **选择结构**:`case`语句处理多分支,如`case $var in value1) command1;; value2) command2;; esac`。 4. **跳转语句**:`break`跳出当前循环,`continue`跳过当前迭代,`return`结束函数执行。 **三、循环** ...

    Linux Shell笔记要点

    Linux Shell 的基本概念、存取权限与安全、脚本调用的机制、命令替换、管道和后台命令、模式匹配、输出重定向、变量、环境变量、位置变量、标准变量、表达式运算、输出命令、输入命令、流程控制、Expr 算术运算命令...

    bash脚本编写教程

    3. **分支控制**:`case`语句允许基于不同条件执行不同代码块。 4. **流程控制命令**:`break`, `continue`用于中断当前循环,`return`用于结束函数并返回值。 ### 常用命令 Bash脚本中可以使用所有Unix命令。这里...

    linux shell 脚本入门

    - `case`语句提供多路分支选择。 8. **输入/输出重定向**: - `&gt;`用于重定向输出到文件,`&gt;&gt;`追加输出。 - `用于从文件读取输入。 - `|`管道符将一个命令的输出作为另一个命令的输入。 9. **命令替换与参数...

    Linux/Shell命令详解

    - `case`:多分支选择结构。 - `&&`/`||`:逻辑与和逻辑或,用于命令链接。 4. **脚本编程**: - `.bashrc`和`.bash_profile`:配置Shell环境的启动脚本。 - `function`:定义自定义函数。 - `echo`:输出文本...

    linux shell程序设计实验1

    Linux Shell程序设计是Linux系统管理与自动化任务处理的重要部分,主要使用Bash(Bourne-Again SHell)脚本来编写。在这个“linux shell程序设计实验1”中,我们将探讨如何利用基本的`case`和`if`语句来编写简单的...

    Bash 新手指南, 命令及shell script

    8. **控制结构**:`break`退出循环,`continue`跳过当前循环剩余部分,`case`进行多分支选择。 9. **命令别名**:通过`alias`定义命令别名,如`alias ll='ls -l'`。 10. **函数参数**:`$0`表示脚本本身,`$1`到`$9`...

    高级bash脚本编程指南

    - **case语句**:提供了一种更灵活的多分支选择方式。 2. **函数** - 定义与调用函数,理解函数参数的传递和局部变量的概念。 - 使用`return`命令传递函数结果。 3. **数组** - Bash支持一维数组,了解如何...

    advanced-bash-automation:先进的bash自动化

    3. **流程控制**:包括`for`循环、`while`循环和`case`语句,用于重复执行任务或根据不同的条件分支执行代码。 4. **函数**:可以定义自己的函数,例如`function myfunc() { commands; }`,在脚本中调用以重用代码...

    linux shell script tutorial_v2_r5.pdf

    - bash是最常用的Linux shell之一,功能强大且兼容性好。 **2.2 常见Shell命令** - 包括目录操作、文件处理、文本编辑等常用命令。 **2.3 Shell在Linux环境中的角色** - Shell作为用户与内核之间的接口,处理...

    Advanced.Bash-Scripting.Guide.Cn.txt

    `case`语句用于多分支选择: ```bash day="Wednesday" case $day in Monday|Tuesday|Wednesday) echo "Midweek" ;; Thursday|Friday) echo "Almost weekend" ;; Saturday|Sunday) echo "Weekend" ;; esac `...

    20120821_bash脚本入门1

    Bash脚本是Linux系统中广泛使用的命令行脚本语言,主要用于自动化执行一系列任务。本文将深入讲解bash脚本的基础知识,包括变量、逻辑判断、运算符号、逻辑表达式以及条件判断。 1. **变量** - **输入变量**:在...

    bash-scripting

    2. **控制结构**:详述if-else语句、for循环、while循环和until循环,以及如何使用case语句进行多分支选择。 3. **函数**:如何定义和使用函数,以及如何传递参数。 4. **条件表达式**:讲解用于测试文件属性和...

    shell bash 手册

    `case`结构用于多分支选择,类似于其他编程语言中的`switch`语句。 ### 六、函数定义 Bash支持函数定义,可以使用`function`关键字或者简单的`()`来定义函数。例如: ```bash function hello() { echo "Hello, ...

Global site tag (gtag.js) - Google Analytics