shell编程-case流程控制

shell编程-case流程控制

case语句介绍

case ... esac 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

在某些时候,case要优于if,少写很多判断

case语句格式

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

开头是case 结尾是esac

case 值 in
    动作1)
        cmd1
        cmd2
        ;;
    动作2)
        cmd1
        cmd2
        ;;
esac

语句实例

#!/bin/bash
read -p 'input hostname:' host
case $host in
        1|web01)
                echo '连接 172.16.1.7 web01'
                ;;
        2|web02)
                echo '连接 172.16.1.8 web02'
                ;;
        3|web03)
                echo '连接 172.16.1.9 web03'
                ;;
esac
[root@web02 ~]# sh 3.sh
input hostname:1
连接 172.16.1.7 web01
[root@web02 ~]# sh 3.sh
input hostname:web02
连接 172.16.1.8 web02
[root@web02 ~]# sh 3.sh
input hostname:2
连接 172.16.1.8 web02
[root@web02 ~]# sh 3.sh
input hostname:3
连接 172.16.1.9 web03
[root@web02 ~]# sh 3.sh
input hostname:web03
连接 172.16.1.9 web03

跳板机实例

#!/bin/bash
cat <<EOF
+--------------------------+
| 1 172.16.1.7 web01       |
+--------------------------+
| 2 172.16.1.8 web02       |
+--------------------------+
| 3 172.16.1.9 web03       |
+--------------------------+
| 4 172.16.1.5 lb01        |
+--------------------------+
| 5 172.16.1.6 lb02        |
+--------------------------+
| 6 172.16.1.31 nfs01      |
+--------------------------+
| 7 172.16.1.41 backup     |
+--------------------------+
| 8 172.16.1.61 m01        |
+--------------------------+
| 9 172.16.1.51 db01       |
+--------------------------+
| 10 172.16.1.52 db02      |
+--------------------------+
| 11 172.16.1.71 zabbix    |
+--------------------------+
EOF
read -p '请输入你要连接的主机(IPor主机名or编号):' host
case $host in
        1|web01|172.16.1.7)
                ssh root@172.16.1.7
                ;;
        2|web02|172.16.1.8)
                ssh root@172.16.1.8
                ;;
        3|web03|172.16.1.9)
                ssh root@172.16.1.9
                ;;
        4|lb01|172.16.1.5)
                ssh root@172.16.1.5
                ;;
        5|lb02|172.16.1.6)
                ssh root@172.16.1.6
                ;;
        6|nfs|172.16.1.31)
                ssh root@172.16.1.31
                ;;
        7|backup|172.16.1.41)
                ssh root@172.16.1.41
                ;;
        8|m01|172.16.1.61)
                ssh root@172.16.1.61
                ;;
        9|db01|172.16.1.51)
                ssh root@172.16.1.51
                ;;
        10|db02|172.16.1.52)
                ssh root@172.16.1.52
                ;;
        11|zabbix|172.16.1.71)
                ssh root@172.16.1.71
                ;;
        *)
                echo "Usage: $0 请输入表内的IP或者主机名或者编号"
esac
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇