核雕大师李双简介:在linux的学习中,碰到了如下问题,望得到帮助。

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 20:53:52
在linux的学习中,碰到了如下问题,望得到帮助。问题如下:

编写一个Shell脚本,从键盘读入5个整数。然后显示最大数、最小数以及平均值。

在编写的过程中,不知道如何运用循环语句,望得到指点
在循环中,怎么运用判断?怎么对从键盘读取的变量进行判断?
如,判断最大的数?

while语句

Shell中有三种用于循环的语句,它们是while语句、for语句和until语句。

while语句的一般形式是:

while 测试条件
do
命令表
done

其执行过程是,先进行条件测试,如果结果为真,则进入循环体(do—done之间部分), 执行其中命令;然后再做条件测试……直至测试条件为假时才终止while语句的执行。例如:

while [ $1 ]
do
if [ -f $1 ]
then echo "display : $1 "
cat $1
else echo "$1 is not a file name . "
fi
shift
done

这段程序对各个给定的位置参数,首先判断其是否是普通文件,若是,则显示其内容;否则,显示它不是文件名的信息。每次循环处理一个位置参数$1,利用shift命令可把后续位置参数左移。

测试条件部分除使用test命令或等价的方括号外,还可以是一组命令。根据其最后一个命令的退出值决定是否进入循环体执行。

until语句

until语句的一般形式是:

until 测试条件
do
命令表
done

它与while语句很相似,只是测试条件不同:当测试条件为假时,才进入循环体,直至测试条件为真时终止循环。

for语句

for语句是最常用的建立循环结构的语句。其使用格式主要有三种,取决于循环变量的取值方式。格式一:

for 变量 in 值表
do
命令表
done

例如:

for day in Monday Wednesday Friday Sunday
do
echo $day
done

其执行过程是,变量day依次取值表中各字符串,即第一次将“Monday”赋给day,然后进入循环体,执行其中的命令,显示出 Monday。第二次将“Wednesday”赋给day,然后执行循环体中命令,显示出Wednesday。依次处理,当day把值表中各字符串都取过一次之后,下面day的值就变为空串,从而结束for循环。因此,值表中字符串的个数就决定了for循环执行的次数。在格式上,值表中各字符串之间以空格隔开。

格式二:

for 变量 in 文件正则表达式
do
命令表
done

其执行过程是,变量的值依次取当前目录下(或给定目录下)与正则表达式相匹配的文件名,每取值一次,就进入循环体执行命令表,直至所有匹配的文件名取完为止,退出for循环。

格式三:

for i in $* 或者 for i
do do
命令表 命令表
done done

这两种形式是等价的。其执行过程是,变量i 依次取位置参数的值,然后执行循环体中的命令表,直至所有位置参数取完为止。

break命令和continue命令

break命令可以使我们从循环体中退出来。其语法格式是:

break [ n ]

其中,n表示要跳出几层循环。默认值是1,表示只跳出一层循环。

continue命令跳过循环体中在它之后的语句,回到本层循环的开头,进行下一次循环。其语法格式是:

continue [ n ]

其中,n表示从包含continue语句的最内层循环体向外跳到第几层循环。默认值为1。循环层数是由内向外编号。

let x=0
for x -lt 5
do
let x=x+1
done
这个就是For了