我使用过的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命令系列总目录
分享到:
相关推荐
- `case` 用于模式匹配的多分支选择结构。 - **函数与脚本**: - `function` 定义可复用的代码块。 - `source` 加载并执行另一个脚本文件。 - `.` (点操作符) 与`source`功能相同。 - **输入输出重定向**: -...
- **历史记录**:Bash会自动记录用户执行过的命令,方便后续查找和重复使用。 #### 12. 杂项 - **12.1 set命令和选项**:用于设置Bash的行为和选项。 - **12.2 shopt命令和选项**:用于更改Bash的可选行为。 - **...
- **分支结构**:`case`语句用于多分支选择。 4. **函数** - **定义函数**:`function func_name() { commands; }`,在脚本或命令行中定义函数。 - **调用函数**:使用函数名,如`func_name`。 5. **输入/输出...
在Bash 4及以上版本,可以使用更现代的关键字`[[ EXPR ]]`,它提供了更多的测试选项和灵活性。 整型测试主要用于整数比较,包括`-gt`(大于)、`-lt`(小于)、`-ge`(大于等于)、`-le`(小于等于)和`-eq`(等于...
3. **选择结构**:`case`语句处理多分支,如`case $var in value1) command1;; value2) command2;; esac`。 4. **跳转语句**:`break`跳出当前循环,`continue`跳过当前迭代,`return`结束函数执行。 **三、循环** ...
Linux Shell 的基本概念、存取权限与安全、脚本调用的机制、命令替换、管道和后台命令、模式匹配、输出重定向、变量、环境变量、位置变量、标准变量、表达式运算、输出命令、输入命令、流程控制、Expr 算术运算命令...
3. **分支控制**:`case`语句允许基于不同条件执行不同代码块。 4. **流程控制命令**:`break`, `continue`用于中断当前循环,`return`用于结束函数并返回值。 ### 常用命令 Bash脚本中可以使用所有Unix命令。这里...
- `case`语句提供多路分支选择。 8. **输入/输出重定向**: - `>`用于重定向输出到文件,`>>`追加输出。 - `用于从文件读取输入。 - `|`管道符将一个命令的输出作为另一个命令的输入。 9. **命令替换与参数...
- `case`:多分支选择结构。 - `&&`/`||`:逻辑与和逻辑或,用于命令链接。 4. **脚本编程**: - `.bashrc`和`.bash_profile`:配置Shell环境的启动脚本。 - `function`:定义自定义函数。 - `echo`:输出文本...
Linux Shell程序设计是Linux系统管理与自动化任务处理的重要部分,主要使用Bash(Bourne-Again SHell)脚本来编写。在这个“linux shell程序设计实验1”中,我们将探讨如何利用基本的`case`和`if`语句来编写简单的...
8. **控制结构**:`break`退出循环,`continue`跳过当前循环剩余部分,`case`进行多分支选择。 9. **命令别名**:通过`alias`定义命令别名,如`alias ll='ls -l'`。 10. **函数参数**:`$0`表示脚本本身,`$1`到`$9`...
- **case语句**:提供了一种更灵活的多分支选择方式。 2. **函数** - 定义与调用函数,理解函数参数的传递和局部变量的概念。 - 使用`return`命令传递函数结果。 3. **数组** - Bash支持一维数组,了解如何...
3. **流程控制**:包括`for`循环、`while`循环和`case`语句,用于重复执行任务或根据不同的条件分支执行代码。 4. **函数**:可以定义自己的函数,例如`function myfunc() { commands; }`,在脚本中调用以重用代码...
- bash是最常用的Linux shell之一,功能强大且兼容性好。 **2.2 常见Shell命令** - 包括目录操作、文件处理、文本编辑等常用命令。 **2.3 Shell在Linux环境中的角色** - Shell作为用户与内核之间的接口,处理...
`case`语句用于多分支选择: ```bash day="Wednesday" case $day in Monday|Tuesday|Wednesday) echo "Midweek" ;; Thursday|Friday) echo "Almost weekend" ;; Saturday|Sunday) echo "Weekend" ;; esac `...
Bash脚本是Linux系统中广泛使用的命令行脚本语言,主要用于自动化执行一系列任务。本文将深入讲解bash脚本的基础知识,包括变量、逻辑判断、运算符号、逻辑表达式以及条件判断。 1. **变量** - **输入变量**:在...
2. **控制结构**:详述if-else语句、for循环、while循环和until循环,以及如何使用case语句进行多分支选择。 3. **函数**:如何定义和使用函数,以及如何传递参数。 4. **条件表达式**:讲解用于测试文件属性和...
`case`结构用于多分支选择,类似于其他编程语言中的`switch`语句。 ### 六、函数定义 Bash支持函数定义,可以使用`function`关键字或者简单的`()`来定义函数。例如: ```bash function hello() { echo "Hello, ...