课时73:流程控制_for循环_综合案例

1.1.2 综合案例

学习目标

这一节,我们从 信息收集、其他实践、小结 三个方面来学习。

信息收集

案例需求

	根据提示信息,选择输出 cpu 或者 内存信息。

脚本实践-采集系统负载信息

查看脚本内容
[root@localhost ~]# cat systemctl_load.sh
#!/bin/bash
# 功能:采集系统负载信息
# 版本:v0.2
# 作者:书记
# 联系:www.superopsmsb.com

# 定制资源类型
resource_type=(CPU MEM)
cpu_attribute=(1 5 15)
free_attribute=(总量 使用 空闲)

# 获取相关的属性信息
cpu_load=($(uptime | tr -s " " | cut -d " " -f 11-13 | tr "," " "))
free_info=($(free -m | grep Mem | tr -s " " | cut -d " " -f 2-4))
# 服务的操作提示
echo -e "\e[31m---------------查看资源操作动作---------------
 1: CPU  2: MEM
-------------------------------------------"'\033[0m'
# 选择服务操作类型
read -p "> 请输入要查看的资源信息类型: " resource_id
echo
if [ ${resource_type[$resource_id-1]} == "CPU" ]
then
    echo -e "\e[31m\t系统CPU负载信息\e[0m"
    echo -e "\e[32m================================"
    for index in ${!cpu_attribute[@]}
    do
        echo "CPU ${cpu_attribute[$index]} min平均负载为: ${cpu_load[$index]}" 
    done
    echo -e "================================\e[0m"
elif [ ${resource_type[$resource_id-1]} == "MEM" ]
then
    echo -e "\e[31m\t系统内存负载信息\e[0m"
    echo -e "\e[32m================================"
    for index in ${!free_attribute[@]}
    do
        echo "内存 ${free_attribute[$index]} 信息为: ${free_info[$index]} M" 
    done
    echo -e "================================\e[0m"
fi
脚本使用效果
[root@localhost ~]# /bin/bash systemctl_load.sh
---------------查看资源操作动作---------------
 1: CPU  2: MEM
-------------------------------------------
> 请输入要查看的资源信息类型: 1

        系统CPU负载信息
================================
CPU 1 min平均负载为: 0.00
CPU 5 min平均负载为: 0.01
CPU 15 min平均负载为: 0.05
================================
[root@localhost ~]# /bin/bash systemctl_load.sh
---------------查看资源操作动作---------------
 1: CPU  2: MEM
-------------------------------------------
> 请输入要查看的资源信息类型: 2

        系统内存负载信息
================================
内存 总量 信息为: 3770 M
内存 使用 信息为: 247 M
内存 空闲 信息为: 3302 M
================================

其他实践

需求

	按照信息提示,分别打印 三角形 和 等腰梯形
        *                  *****
       * *                *******
      * * *              *********
     * * * *            ***********
    * * * * *          *************	

脚本内容

[root@localhost ~]# cat drawn_graph.sh
#!/bin/bash
# 功能:打印相关图形
# 版本:v0.1
# 作者:书记
# 联系:www.superopsmsb.com

graph_type=(三角形 梯形)
# 服务的操作提示
echo -e "\e[31m---------------查看可以绘制的图形---------------
 1: 三角形  2: 梯形
-------------------------------------------"'\033[0m'
# 选择服务操作类型
read -p "> 请输入要查看的资源信息类型: " graph_id
case ${graph_type[$graph_id-1]} in
    "三角形")
        read -p "> 请输入三角形绘制的层数: " layer_num
        # 定制打印n层的三角形
        for i in $(seq 1 ${layer_num});do
            # 定制打印三角形左侧的空格效果
            for m in $(seq $[${layer_num}-$i]);do
                echo -n " "
            done
            # 定制打印三角形核心部分
            for j in $(seq $i);do
                echo -n "* "
            done
            # 打印完每行就换行
            echo
        done;;
    "梯形")
        read -p "> 请输入梯形绘制的层数: " layer_num
        # 定制打印n层的梯形
        print_num=${layer_num}
        for i in $(seq 1 ${layer_num});do
            # 定制打印梯形左侧的空格效果
            for m in $(seq $[${layer_num}-$i]);do
                echo -n " "
            done
            # 定制打印梯形核心部分
            for j in $(seq $[$print_num]);do
                echo -n "*"
            done
            let print_num+=2
            echo
        done;;
    *)
        echo -e "\e[31m\t请输入正确的绘图类型id\e[0m";;
esac
脚本执行效果
[root@localhost ~]# /bin/bash drawn_graph.sh
---------------查看可以绘制的图形---------------
 1: 三角形  2: 梯形
-------------------------------------------
> 请输入要查看的资源信息类型: 1
> 请输入三角形绘制的层数: 5
    *
   * *
  * * *
 * * * *
* * * * *
[root@localhost ~]# /bin/bash drawn_graph.sh
---------------查看可以绘制的图形---------------
 1: 三角形  2: 梯形
-------------------------------------------
> 请输入要查看的资源信息类型: 2
> 请输入梯形绘制的层数: 5
    *****
   *******
  *********
 ***********
*************

小结


相关推荐

  1. 课时73流程控制_for循环_综合案例

    2024-03-24 14:58:05       46 阅读
  2. 课时78流程控制_until循环_嵌套案例

    2024-03-24 14:58:05       45 阅读
  3. 课时77流程控制_until循环_until基础

    2024-03-24 14:58:05       45 阅读
  4. 课时66:流程控制_case条件控制_嵌套案例

    2024-03-24 14:58:05       44 阅读
  5. 课时84:流程控制_select条件控制_案例实践

    2024-03-24 14:58:05       29 阅读
  6. 流程循环控制语句

    2024-03-24 14:58:05       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 14:58:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 14:58:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 14:58:05       87 阅读
  4. Python语言-面向对象

    2024-03-24 14:58:05       96 阅读

热门阅读

  1. 【Linux】调试器-gdb的安装与使用

    2024-03-24 14:58:05       33 阅读
  2. dom元素+CSS实现阶梯动画效果

    2024-03-24 14:58:05       41 阅读
  3. Linux安装iptables 防火墙

    2024-03-24 14:58:05       39 阅读
  4. 前端安全之XSS与CSRF

    2024-03-24 14:58:05       39 阅读
  5. Median of an Array(贪心策略,编程技巧)

    2024-03-24 14:58:05       35 阅读
  6. Mysql

    Mysql

    2024-03-24 14:58:05      35 阅读
  7. arm linux应用程序crash分析一般方法

    2024-03-24 14:58:05       35 阅读
  8. Vue2 CSS小知识点

    2024-03-24 14:58:05       38 阅读
  9. 【力扣】268.丢失的数字

    2024-03-24 14:58:05       34 阅读
  10. 防火墙有哪些特点?

    2024-03-24 14:58:05       40 阅读
  11. Web框架开发-Django-数据库表的单表查询

    2024-03-24 14:58:05       39 阅读
  12. new world of dream

    2024-03-24 14:58:05       37 阅读