CentOS shell-case语句

Posted 白菜素三鲜丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS shell-case语句相关的知识,希望对你有一定的参考价值。

shell-case语句

case语句

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

## 语法:
case 变量 in
    动作1|动作3|动作4)
        cmd1
        ;;
    动作2)
        cmd2
    *)
        echo 脚本的用法
        ;;
esac

case会将变量和动作进行判断
可以进行多动作判断,使用   |  或

给shell加颜色

## 固定格式
\\e[1;31mzls\\e[0m

red_start=\\e[1;31m
red_end=\\e[0m

$red_start xxx $red_end

echo -e \\e[1;31mzls\\e[0m

[root@m01 ~]# echo -e \\e[5;32;41m zls \\e[0m

\\e \\033 \\E
字体型号;字体颜色;背景颜色m

## 字体型号:
0:正常字体
1:字体加粗
2:字体变浅
3:字体斜体
4:字体下划线
5:字体闪烁

## 字体颜色
30m:黑色
31m:红色
32m:绿色
33m:黄色
34m:蓝色
35m:紫色
36m:天蓝
37m:白色

## 背景颜色
40m:黑色
41m:红色
42m:绿色
43m:黄色
44m:蓝色
45m:紫色
46m:天蓝
47m:白色

跳板机

1.判断指定的ip是否可以连接
2.判断退出密码
3.推送秘钥对

方式一

#!/bin/bash
signal()
  trap  INI QUIT TSTP TERM HUP


ssh_key()
. /etc/init.d/functions
ls -l ~/.ssh/id_rsa &>/dev/null || ssh-keygen -t rsa -P  -f ~/.ssh/id_rsa &>/dev/null
for n in 5 6 7 8 9 31 41 51 71;do
   sshpass -p wsh112233 ssh-copy-id -o StrictHostKeyChecking no -i ~/.ssh/id_rsa.pub root@10.0.0.$n &>/dev/null && \\
   action "10.0.0.$n send public key " /bin/true || \\
   action "10.0.0.$n send public key " /bin/false
done


list_host()
        cat <<EOF
        +------------------------+
        | 1 172.16.1.7 web01     |
        +------------------------+
        | 2 172.16.1.8 web02     |
        +------------------------+
        | 3 172.16.1.31 nfs      |
        +------------------------+
        | 4 172.16.1.41 backup   |
        +------------------------+
        | 5 172.16.1.51 db01     |
        +------------------------+
        | 6 172.16.1.52 db02     |
        +------------------------+
        | 7 172.16.1.71 zabbix   |
        +------------------------+
        | 输入 h 查看帮助菜单    |
        +------------------------+
        | 按 q 退出程序          |
        +------------------------+
EOF

exit_pass()
read -p 请输入密码: pass
while true;do
if [ $pass == 123 ];then
   exit
else
  main
fi
done

host_ip()
  case $host in
    1|172.16.1.7|web01)
      echo 连接 172.1.16.7 web01
      ssh 172.16.1.7
      ;;
    2|172.16.1.8|web02)
      echo 连接 172.16.1.8 web02
      ssh 172.16.1.7
      ;;
    3|172.16.1.31|nfs)
      echo 连接 172.16.1.31 nfs
      ssh 172.16.1.31
      ;;
    4|172.16.1.41|backup)
      echo 连接 172.16.1.41 backup
      ssh 172.16.1.41
      ;;
    5|172.16.1.51|db01)
      echo 连接 172.16.1.51 db01
      ssh 172.16.1.51
      ;;
    6|172.16.1.52|db02)
      echo 连接 172.16.1.52 db02
      ssh 172.16.1.52
      ;;
    7|172.16.1.71|zabbix)
      echo 连接 172.16.1.71 zabbix
      ssh 172.16.1.71
      ;;
    h)
      clear
      list_host
      ;;
    q)
      exit_pass
      ;;
    *)
      echo "Usage: $0 请输入主机名或IP或菜单编号...."
 esac


ssh_key
main()
while true;do
  signal
  list_host
 read -p 请输入需要连接的主机: host
  host_ip
done

main

方式二


#!/bin/bash

menu()
cat <<EOF
+------------------------+
| 1 172.16.1.7 web01     |
+------------------------+
| 2 172.16.1.8 web02     |
+------------------------+
| 3 172.16.1.31 nfs      |
+------------------------+
| 4 172.16.1.41 backup   |
+------------------------+
| 5 172.16.1.51 db01     |
+------------------------+
| 6 172.16.1.52 db02     |
+------------------------+
| 7 172.16.1.53 db03     |
+------------------------+
| 8 172.16.1.54 db04     |
+------------------------+
| 9 172.16.1.61 m01      |
+------------------------+
| 10 172.16.1.71 zabbix  |
+------------------------+
| 输入 h 查看帮助菜单    |
+------------------------+
| 按 q 退出程序          |
+------------------------+
EOF


menu

trap "" HUP INT TSTP
while true;do
read -p 请输入需要连接的主机: host

    case $host in
        1|172.16.1.7|web01)
            echo 连接 172.16.1.7 web01
            ;;
        2|172.16.1.8|web02)
            echo 连接 172.16.1.8 web02
            ;;
        3|172.16.1.31|nfs)
            echo 连接 172.16.1.31 nfs
            ;;
        h)
            clear
            menu
            ;;
        q)
            exit
            ;;
        *)
            echo "Usage: $0 请输入主机名或者IP或者菜单编号..."
    esac
done

以上是关于CentOS shell-case语句的主要内容,如果未能解决你的问题,请参考以下文章

颜色大全

各种 颜色 的代码

Linux 命令

给echo显示添加颜色

Linux echo命令定义字体和背景颜色

BICEP 模块部署虚拟网络,但不是基于 if 语句的 NSG