case:根据变量不同取值,执行不同的命令,多用于列表
Case的特点:
1)case行尾必须为单词”in”,每一模式必须以右括号”)”结束。
2)双分号”;;”表示命令序列的结束。
3)模式字串中,可以用方括号表示一个连续的范围,如”[0-9]”;还可以用竖杠符号”|”表示或,如”A|B”
4)最后的”*)”表示默认模式,其中的*相当于通配符。
格式:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #!/bin/bash
case 变量值 in 模式1) 命令序列1 ;; 模式2) 命令序列2 ;; *) 默认命令序列 esac
|
例:编写系统服务脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #!/bin/bash
case $1 in start) /usr/local/httpd/apachectl start &> /dev/null echo "httpd is running" ;; stop) /usr/local/httpd/apachectl stop &> /dev/null echo "httpd is stop" ;; restart) /usr/local/httpd/apachectl restart &> /dev/null echo "httpd is restart" ;; *) echo "httpd is start/stop/restart/reload/status" ;; esac
|
例:检查用户输入的字符类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" key case "$key" in [0-9]) echo "数字" ;; [a-z]|[A-Z]) echo "字母" ;; *) echo "您输入的是 空格、功能键或其他控制字符。" ;; esac
|
例:选择性别
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #!/bin/bash
read -p "请输入你的性别:" src case $src in "n") echo "你选择的是男性" ;; "v") echo "你选择的是女性" ;; *) echo "请输入n(男性),v(女性),来选择性别" ;; esac
|