25. 自顶向下设计

2019-02-06  本文已影响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"

局部变量

#!/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
}
上一篇 下一篇

猜你喜欢

热点阅读