UNIT19 Shell Functions
1.函数定义 functionName(){命令序列;} 或 function functionName { COMMANDS; } |
2.函数调用 functionName functionName 位置参数 |
3.函数返回 return 用函数中执行的上一个命令的退出码返回; return [value] 用给定的value值返回; |
4.全局函数 export命令可以将函数说明为全局函数,使其可以被子shell继承。 |
5.函数共享 把要共享的函数单独放在一个文件中,然后在要使用该函数的脚本中,在开始位置用以下格式的命令读取该文件。 .fileNme Source fileName |
6.变量限制 local 变量名 限制函数只能本地用于当前函数。 |
#!/bin/sh
printmsg( ){
prefix=“$1”
shift
echo “$prefix:$@”
}
printmsg “$@” #调用函数
所有函数在使用前必须定义,这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它,才可以使用。
调用函数仅使用其函数名即可,要传给函数的变量跟在函数后面。
函数里面定义的变量以下划线(_)开始。
函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中,文件也必须以#!/bin/sh开头。
示例1
#!/bin/sh
#funTest
#to test the function
DATE=`date`
Hello()
{
echo “Hello,today is $DATE”
}
Hello
Shell脚本也有自定义函数的功能。当脚本变得很大时,可将脚本文件中常用的程序写成函数,这样可以使脚本更小.更易于维护,定义函数的语法如下:
fname () {
Shellcommands
}
例:求命令行中输入的数值组的最大的数,将文件存为maxvalue。
#!/bin/bash max() { while test $1 do if test $maxvalue then if test $1 –gt $maxvalue then maxvalue=$1 fi else maxvalue=$1 fi shift done return $maxvalue } max $* echo "Max Value is :$maxvalue" #end |
执行结果: $maxvalue 239 32 78 7 60 20 150 345 3 Max Value is :345 |
3.填写执行结果
s=0;i=1
while test $i –le 5
do
let s=$s+$i*$i
let i=$i+1
done
echo "s= $s"
一组命令集或语句形成的可用块称为shell函数
练习:
step1 在脚本程序中我们首先定义一个yes_or_no函数:
Step2:接下的是这个程序的主要部分:
任务一:给下面的程序添加注释
任务二:设计一个打字训练游戏。要求:
1.主菜单功能为当用户输入“1”,练习输入数字; 输入 “2”,练习输入字母;输入q则退出;当有其他输入提醒用户重新输入。
2.给出待输入的字符串,待用户输入后判断其是否正确。