我使用过的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命令系列总目录
分享到:
相关推荐
以上就是小编为大家带来的解决ssh远程登陆linux显示-bash-4.1$的问题全部内容了,希望大家多多支持软件开发网~ 您可能感兴趣的文章:浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释php $_SERVER windows系统与linux...
linux-shell-scripting-fundamentals-bash.epub
linux下提示bash-command not found.docx
入门Linux-Bash-Shell,PDF文档入门教程。入门Linux-Bash-Shell,PDF文档入门教程。
git-bash.exe
60-Linux-Bash-Terminal-Keyboard-Shortcuts-1.pdf
Linux常用命令和管理02-bash特性及其用法1
windows下msys2或git-bash终端主题配置文件。 1. msys2环境,请将配置文件放在它的$HOME路径下,举例:C:\msys64\home\username\ 2. git-bash环境,请将配置文件放在windows系统的用户目录下,举例:C:\Users\...
linux服务器用户登录后显示-bash问题l
Linux CentOS下shell显示-bash-4.1$不显示用户名路径.docx
git-bash.exe_git
tmux_for_git-bash 来自 github,原始链接也许不能下载。tmux_for_git-bash 来自 github,原始链接也许不能下载。
Linux基础知识(7_10)-Bash
一行bash命令集合的仓库
今天小编就为大家分享一篇解决linux 所有命令无法使用的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
-bash: /usr/local/jdk/jdk1.8.0_181/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 安装完后 java -version 查看版本出现: 原因是:没有那个文件或目录,找了很久发现需要...
和之前C++执行Linux Bash命令的方法 一样,Python依然支持system调用和popen()函数来执行linux bash命令。 方法一:system调用 #仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 import os os....
bash命令和语法--带你升级打boss
virsh-bash-完成 用于 libvirt virsh 命令的 Bash 选项卡完成脚本 使用方法:将 virsh-bash-completion 文件复制到 /etc/bash_completion.d/ 然后重启 bash。
讲述linux操作系统的基本命令,第一个命令ls命令的使用