和其他OS下的编程语言相同,UNIX中的流程控制语句也是构成应用程式的基石。因此笔者认为有必要了解一下UNIX中的流程控制语句,假如您致力于走进UNIX程式世界的话。在介绍流程控制之前,我们先来看看test命令。test命令的参数是条件判断式,当条件为真时则传回非零值,而条件为假时则传回零。在任何的流程控制都必须用到test命令来判断真伪。
test $# = 0
假如执行这个程式没有参数时,会传回非零值代表"$# = 0"这个条件成立。反之则会传回零。
以下介绍各种流程控制:
1. if then
语法连同流程图如下
│ FALSE
<condition>—┐
│TRUE │
then-commands │
├————┘
│
if (condition)
then
then-commands
fi
condition 是个test命令。下文所介绍的各种流程中的condition如无特别说明都是test命令。
┌———————————┐
│if (test $# != 0) │
│ then │
│ echo Arg1: $1 │
│fi │
└———————————┘
$ chkarg Hello
Arg1: Hello
$ chkarg
$
2. if then else
语法连同流程图如下
│ FALSE
<condition>—————┐
│TRUE │
then-commands else-commands
├————————┘
│
if (condition)
then-commands
else
fi
3. if then elif
语法连同流程图如下
│ FALSE
<condition1>—┐
│TRUE │ FALSE
commands1 <condition2>—┐
│TRUE │ │
│ commands2 commands3
├—————┴——— ┘
│
if (condition1)
then
commands1
elif (condition2)
then
commands2
else
commands3
commands3
fi
echo 'word 1: c'
read word1
echo 'word 2: c'
read word2
echo 'word 3: c'
read word3
if (test "$word1" = "$word2" -a "$word2" = "$word3")
then
echo 'Match: words 1, 2, & 3'
elif (test "$word1" = "$word2")
then
echo 'Match: words 1 & 2'
elif (test "$word1" = "$word3")
then
echo 'Match: words 1 & 3'
elif (test "$word2" = "$word3")
then
echo 'Match: words 2 & 3'
else
echo 'No match'
fi
4. for in
语法连同流程图如下
│ FALSE
┌—<arg-list更有东西吗?>—┐
│ │TRUE │
│ 从arg-list取得一项 │
│ 放到变数var │
│ │ │
│ commands │
└——————┘ │
┌———————┘
│
for var in arg-list
do
commands
done
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



