[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
}
网友评论