- 函数是在脚本中可以重复使用的代码块,可以将多次出现的命令封装起来并为这个代码块起个名字,在脚本中需要执行这个代码块的位置只要使用这个函数的名字就能执行函数中的代码,这个过程叫做调用函数,下面将介绍如何在脚本中创建一个函数和如何在脚本中调用函数。
- 在脚本中有两种方式创建函数:
-
第一种方式是使用function关键字,后面跟上为这个代码块起的函数名称,如下格式。
function name(){ 代码块 }
- 注意:name属性是为函数起的唯一名称。必须为定义在脚本的每个函数起一个唯一的名称,函数体内的代码块是一条或多条合法的命令,在调用函数时函数的执行顺序和脚本执行相同,按照命令的顺序从上向下执行。
-
创建函数的第二种方式是不使用function关键字,这和Java中的方法定义相似,如下格式。
name(){ 代码块 }
- 注意:函数名后面的圆括号为空,表明定义的是一个函数。代码块的执行规则与脚本相同。另外需要注意,在脚本中,定义函数要在调用函数之前,如果在定义函数之前调用函数,系统会提示警告信息,命令找不到!。
-
-
1、在脚本中调用函数只要指定函数名就可以了,就像使用普通命令一样。定义的函数要在调用函数之前,否则会提示警告信息。
-
1>例:bash108.sh:
#!/bin/bash # 调用函数,在定义函数之前调用函数会提示警告信息 test1 # 定义函数 test1(){ echo "Hello function!" }
-
控制台显示:
$ bash108.sh ./bash108.sh: line 3: test1: command not found
-
-
2>例:bash109.sh:
#!/bin/bash # 定向函数 test1(){ echo "Hello function!" } # 调用函数 test1
-
控制台显示:
$ bash109.sh Hello function!
-
-
-
2、如果在一个脚本中存在多个函数,函数名一定要唯一,如果存在两个同名的函数,调用函数会出现什么情况呢!如下面的例子。
-
1>例:bash110.sh:
#!/bin/bash # 定义函数1 function01(){ echo "Hello function1!" } # 定义函数2,注意:两个函数的函数名相同,后面的函数会覆盖前面定义的函数 function01(){ echo "Hello function2!" } # 调用函数 function01
-
控制台显示:
$ bash110.sh Hello function2!
-
-
可以看到存在同名函数的脚本中,后面定义的函数会覆盖之前定义的同名函数,并且不会提示警告信息。
-