bash脚本编程之十 函数详解
·函数(function)
function翻译成函数对于中文来讲不是特别的精确,因为function的真正意思是功能,理论上function这个英文单词既可以翻译成函数,又可以翻译成功能,但是我们数学意义上的函数和程序中的函数并不是同一个概念,所以我们如果把function称为功能可能会更合适一点,但是我们大家约定俗成通常都称其为函数,函数是实现结构化编程的一个重要思想,其主要目的是为了实现代码重用
·库(library)
库是由一些共享对象(so->shared object)组成的,库存在的主要目的是为了被多个进程同时调用
·在bash脚本当中如何定义一个函数
在bash脚本当中使用函数说白了其实就是把本来应该独立执行的一段代码给它封装成一个独立的功能,并且给它起个名字,这个过程就叫做定义函数
定义函数的方法:
1,使用function关键字
格式:
function FUNCNAME {
command
}->花括号里面的内容称为函数体
2,直接定义函数名的方法
格式:
FUNCNAME() {
command
}
由以上两图可知函数的调用直接写上函数名即可,不用在函数名后面再加上小括号了,并且封装好的函数可以重复调用多次,函数不经过调用是不会执行函数体内的代码的,函数也有执行状态结果返回值:
我们可以根据需要来定义一个函数的执行状态结果返回值,定义方法->
使用return关键字
格式:
return #(0-255)
类似于脚本的执行状态返回值,0代表正确返回,1-255代表各种情况的错误返回,脚本的执行状态结果返回值取决于脚本中执行的最后一条命令,一旦函数在执行的过程中遇到了return关键字,那么函数会立即终止执行,这样一来我们就可以在主调函数中通过函数的返回值来判断函数是否正确执行了
·接收参数的函数
我们在给函数传递参数的时候是在函数名后面直接跟上要传递的参数,参数之间使用空格隔开,而且函数的形参和脚本的位置参数类似都是用$1,$2,...表示的
格式:
FUNCNAME arg1 arg2 ...
练习:
写一个脚本,要求
判断规定网段之中哪些主机在线,要求:
1,使用函数来实现一台主机的判断过程
2,在主程序中调用此函数来判断指定网段范围内所有主机的在线情况
脚本内容:
脚本执行结果:
练习:写一个脚本,要求
使用函数完成
1,函数能够接收一个参数,参数为用户名
判断该用户是否存在,如果存在就返回此用户的UID和shell,并且返回正常的返回值,如果不存在,就显示此用户不存在,并且返回错误的返回值
2,在主程序中调用此函数,并且让用户自己输入用户名传递给函数来进行判断,第一次判断完成后不退出脚本,而是提示用户继续输入下一个用户名,如果用户输入的用户名不存在,那么就请用户重新输入,但是如果用户输入q或Q就退出脚本
脚本内容:
脚本执行结果: