第4章 linux编程基础(第二部分)
循环或跳转是一系列命令的重复执行过程,常见的循环语句有3种: for循环:依次处理列表内信息,直至循环耗尽。 until循环:此循环语句不常使用,until循环直至条件为真。条件部分在循环末尾。 while循环:while循环当条件为真时,循环执行,条件部分在循环头。 流控制语句的任何循环均可嵌套使用,例如可以在一个for循环中嵌入另一个for循环。也可以在一个for循环内嵌入一个while循环。 2.循环语句 1)for循环 for循环一般格式: for 变量名 in 列表 do 命令1 …… done 当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中的值。命令可为任何有效的shell命令和语句。变量名为任何单词。 For循环示例: for file in hello.c do cat $file | more done 2)while循环 while循环用于不断执行一系列命令,也用于从文件中读取数据,其格式为: while 表达式 do 命令1 …… done 在while和do之间可以放多个命令。 表达式用作测试条件。只有当表达式的值为0(真)时,do和done之间命令才被执行,如果表达式的值不是0,则循环终止。 命令执行完毕,控制返回循环顶部,从头开始,直至测试条件为假。 Shell程序清单如下: COUNT=0 while [ $COUNT –lt 5 ] do COUNT=`expr $COUNT + 1` echo $COUNT done 分析:Shell程序执行结束后,屏幕上显示的内容为什么? while循环语句示例 对于脚本段间互相重复的部分。Shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。 4.5.4 shell函数 1.定义函数 所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首先发现它后,才可以使用。 函数的定义格式: [function] funname( ) { 命令 …… } function是可选项,函数体内可以有多个命令。 函数使用示例 hello( ) { echo “Today’s date is `data`” } echo “Now going to the function hello.” hello echo “Back from the function hello.” 示例中的前4行定义了hello函数,第6行调用hello函数(仅使用函数名即可)。 请问,直接运行该shell函数的结果是什么。 2.参数传递 向函数传递参数就像在一般脚本中使用特殊变量$1,$2…$9一样,函数取得所传参数后,将原始参数传回shell脚本 最好先在函数内重新设置变量保存所传的参数。 iscontinue() { dat=$1 case $dat in Y) return 0 ;; N) return 1 ;; *) echo "Your answer is neither Y nor N" ;; esac } echo “Continue(Y/N):” read answer if iscontinue $answer then continue else break fi 参数传递示例 常用的make命令行选项 选 项 说 明 -f file 读入当前目录下的file文件作为Makefile。 -n 显示将需要执行的命令,但实际上并不执行这些命令 -I dir 指定被包含的Makefile所在的目录 -s 在执行时不显示命令名 -w 如果make在执行时改变目录,则显示当前目录名 -r 禁止使用所有make的内置规则 -d 打印调试信息 -i 忽略Makefile规则中的命令执行后返回的非零错误码。此时,即使某个命令发生错误,make仍将继续执行 -k 如果某个目标编译失败,继续编译其他目标。通常情况下,make在一个目标编译失败后终止 对于工程较大的系统设计时,Makefile文件的制作非常困难,也特别耗时。 autoTools 是系列工具,它包含了aclocal、autoscan、autoconf、autoheader和automake工具,使用autoTool