美文网首页
25. 自顶向下设计

25. 自顶向下设计

作者: 独木舟的木 | 来源:发表于2019-02-06 00:47 被阅读8次

    [TOC]

    自顶向下的设计方法

    先确定上层步骤,然后再逐步细化这些步骤的过程被称为自顶向下设计。
    这种技巧允许我们把庞大而复杂的任务分割为许多小而简单的任务。自顶向下设计是一种常见的程序设计方法,尤其适合 shell 编程。

    shell 函数的两种语法形式:

    # name 是函数名,
    # commands 是一系列包含在函数中的命令。
    
    function name {
        commands
        return
    }
    
    name () {
        commands
        return
    }
    

    shell 函数的使用示例:

    1     #!/bin/bash
    2
    3     # Shell function demo
    4
    5     function funct {
    6         echo "Step 2"
    7         return
    8     }
    9
    10     # Main program starts here
    11
    12     echo "Step 1"
    13     funct
    14     echo "Step 3"
    

    局部变量

    • 局部变量只能在定义它们的 shell 函数中使用,并且一旦 shell 函数执行完毕,它们就不存在了。
    • 通过在变量名之前加上单词 local,来定义局部变量。
    • 这个功能就允许 shell 函数能保持各自以及与它们所在脚本之间的独立性。
    #!/bin/bash
    # local-vars: script to demonstrate local variables
    foo=0 # 全局变量 foo
    funct_1 () {
        local foo  # 函数 funct_1 的局部变量 foo
        foo=1
        echo "funct_1: foo = $foo"
    }
    funct_2 () {
        local foo  # 函数 funct_2 的局部变量 foo
        foo=2
        echo "funct_2: foo = $foo"
    }
    echo "global:  foo = $foo"
    funct_1
    echo "global: foo = $foo"
    funct_2
    echo "global: foo = $foo"
    

    保持函数运行

    report_uptime 函数:

    report_uptime () {
      cat <<- _EOF_
      <H2>System Uptime</H2>
      <PRE>$(uptime)</PRE> # 命令结果被 <PRE> 标签包围, 为的是保持命令的输出格式。
      _EOF_
      return
    }
    

    report_disk_space 函数:

    report_disk_space () {
      cat <<- _EOF_
      <H2>Disk Space Utilization</H2>
      <PRE>$(df -h)</PRE> # 确定磁盘空间的数量
      _EOF_
      return
    }
    

    report_home_space 函数:

    report_home_space () {
      cat <<- _EOF_
      <H2>Home Space Utilization</H2>
      <PRE>$(du -sh /home/*)</PRE>
      _EOF_
      return
    }
    
    # 改进代码:
    report_home_space () {
        if [[ $(id -u) -eq 0 ]]; then
            cat <<- _EOF_
            <H2>Home Space Utilization (All Users)</H2>
            <PRE>$(du -sh /home/*)</PRE>
            _EOF_
        else
            cat <<- _EOF_
            <H2>Home Space Utilization ($USER)</H2>
            <PRE>$(du -sh $HOME)</PRE>
            _EOF_
        fi
        return
    }
    

    相关文章

      网友评论

          本文标题:25. 自顶向下设计

          本文链接:https://www.haomeiwen.com/subject/vqivsqtx.html