美文网首页
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