25. 自顶向下设计

[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_
  

System Uptime

$(uptime)
# 命令结果被
 标签包围, 为的是保持命令的输出格式。
  _EOF_
  return
}

report_disk_space 函数:

report_disk_space () {
  cat <<- _EOF_
  

Disk Space Utilization

$(df -h)
# 确定磁盘空间的数量 _EOF_ return }

report_home_space 函数:

report_home_space () {
  cat <<- _EOF_
  

Home Space Utilization

$(du -sh /home/*)
_EOF_ return } # 改进代码: report_home_space () { if [[ $(id -u) -eq 0 ]]; then cat <<- _EOF_

Home Space Utilization (All Users)

$(du -sh /home/*)
_EOF_ else cat <<- _EOF_

Home Space Utilization ($USER)

$(du -sh $HOME)
_EOF_ fi return }

你可能感兴趣的:(25. 自顶向下设计)