首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

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

我使用过的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 Mshow_baby 女show_baby Fshow_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/functionstest -x /usr/sbin/atd || exit 0RETVAL=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" instart)        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 1esacexit $?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命令系列总目录

?

热点排行