linux基础(二十)----linux编程基础----子程序----函数(2)
- UID
- 1066743
|
linux基础(二十)----linux编程基础----子程序----函数(2)
给函数传递参数
例如,假设要写一个验证用户ID和密码( password)的函数,这个函数除了ID和密码之外,还包括所有验证用户身份所必需的命令和信息。在每次调用函数时,除了ID和密码可以不同之外,其余各部分都应相同。
如果读者想在程序中调用该函数,就把ID和密码作为参数传递给函数,linux把它们赋给某些变量。在这个程序中,这两个变量分别是
1和
2。每一个数字都指向它所对应的传递来的参数。注意,由于Linux在这里期望的是数字,所以不能用其他的字符如varl来取代这些变量中的数字的。
因此,可以用变量来取代函数定义中的信息。例如,ID是传递给函数的第一个参数,密码是传递给函数的第二个参数。因此,在函数定义中,当需要引用ID时就可以用变量$1,需要引用密码时可以用变量$2。
请看下面的例子:
#!/bin/bash
clear
function verify
{
if [$1 -eq "Bob" ]&&[$2 -eq "555"]
then
echo "Verified"
eise
echo "Rejected"
fi
}
verify Bob 555
验证传递给函数的参数的个数
如果程序不能给一个函数传递它所需要的全部信息,可能会遇到麻烦。例如,一个函数可
能要依据程序提供的某些信息来进行某种计算操作。不过,如果程序根本不给函数传递什么
信息,也可能会出现错误。
变量$#包含了传递给函数的参数的个数。通过对变量$#的值和函数实际需要的参数的
个数进行比较,就可以决定是否阻止函数处理传递来的信息。请看下面的示例:
#!/bin/bash
clear
function verify
{
if [$# -ne 2]
then
echo "Wrong number of arguments!"
else
if[$1 -eq "Bob"] &&[$2 -eq "555"]
then
echo "Verified"
else
echo "Rejected"
fi
fi
}
verify Bob 555
与子程序共享函数
子程序同样也可以使用程序员建立的函数。只要把子程序设想成是程序中的一个程序即可。
我们建立一个用函数验证用户ID和密码的程序。但这次却想在另一个不含有该函数的程序中使用该函数。当然,不是把该函数复制到第二个程序中,而是让第二个程序(子程序)也能分享第一个程序中的函数。
我们可以用export命令输出函数,实现子程序之间共享函数。然后,就可以在子程序中调用该子函数。请看下面的 例子:
#!/bin/bash
clear
function verify
{
if [$# -ne 2]
then
echo "Wrong number of arguments!"
else
if[$1 -eq "Bob"]&&[$2 -eq "555"]
then
echo "Verified"
else
echo "Rejected"
fi
fi
}
export verify
subprogram1
现在对加在函数定义之后的两行说明如下:
1.在函数定义结束符“}”之后,用export命令来说明子程序subprogram1可以访问函数
verify。
2.程序中最后一行是调用子程序subprogram1。注意,子程序subprogram1并没有包含函
数verify的定义,但子程序可以调用它,因为在调用予程序之前已用export命令说明了
输出该函数verify。
子程序subprogram1如下:
#!/bin/bash
clear
verify "Bob" "555" |
|
|
|
|
|