1.在脚本中定义函数
functin_name(){ //直接的定义方式
语句块
}
function function_name(){ //使用关键字 function 定义的方式
语句块
}
函数命名规则:
- 为了和变量区分,使用小写字母和下划线,以字母开头
- 不能使用命令作为函数名
- 不能使用特殊符号
- 函数名尽力体现功能
2.在脚本中使用函数
在脚本中使用函数名直接调用函数
#! /bin/bash
#this is a example
#2017/5/12
function hello(){ //使用关键字function
echo "Now is the function hello."
echo "Hello~"
}
hi(){ //不适用关键字function
echo "Now is the function hi."
echo "Hi~"
}
//脚本主体部分,调用定义的函数
echo "Now call the function hello."
hello //调用函数hello
echo "Now call the function hi."
hi //调用函数hi
3.向函数传递参数和返回值
脚本的位置变量:http://blog.youkuaiyun.com/wee_mita/article/details/71171849
在函数中获取参数可以像脚本获取参数那样,获取位置变量
#!/bin/bash
#this is a example
#2017/5/12
function A(){ //定义函数A
echo 'expr $1 + $2' //第一第二个位置参数
}
D= 'A 100 300' //定义变量D,并且调用函数A,其中100 300 为函数A的第一第二个位置变量
if [ $? = 0 ] //脚本预定义的变量,判断上一条命令是否执行成功,成功返回0,否则非0,通常为1
then
echo "D=$D" //只返回一个D的值
echo "D="$D //通过变量可以返回多个函数值
else
echo "Function A fails."
fi
4.返回函数执行状态
在脚本中调用函数后,函数会执行函数结构体中的语句,完成后系统会根据函数中的最后一个语句的执行状态,自动返回函数的执行状态信息,但是有时候函数中关键的语句不是最后一句,这时候就需要使用return语句
return语句:
- return:将函数最后一条命令的执行状态作为其状态信息返回
- return 0:返回函数成功执行的信息
- return 1:返回函数错误的信息
5.使用函数文件调用
需要编写一个较为庞大的脚本时,可能会涉及许多的函数、变量,通常将重众多的函数和变量放在一个单独的脚本文件中
#!/bin/bash
#This is a function definition script
#2017/5/12
#The name of the script is function.example
function hello(){
echo "Now is the function hello."
echo "Hello~"
return //将函数最后一条命令的执行状态作为其状态信息返回
}
hi(){
echo "Now is the function hi."
echo "Hi~"
return //将函数最后一条命令的执行状态作为其状态信息返回
}
调用已经编写好的函数文件:
- 将函数文件包含在脚本文件中,然后直接进行调用
- 像变量一样在命令行提示符下使用(在命令行提示符中调用函数文件后,就可以直接调用函数)
#!/bin/bash
#this is a example script
#2017/5/12
../function.example //函数文件的路径应该与脚本文件的路径相同,否则需要输入函数文件的绝对路径或相对路径
echo "Now call the functon hello."
hello John //调用时传递参数
//在命令行提示符中调用函数
../function.example
hi Alix
Now is the function hi. //这是输出
Hi~Alix //这是输出
可以将函数文件写入环境变量中,然后像使用命令一样调用自定义的函数,以实现较复杂的功能
6.像脚本传递参数
通常通过位置变量来传递参数,但是位置变量的最大个数为9,如何传递超过9个变量呢,一般采用shift命令
shift命令的用法比较特殊,它没有选项和参数,直接运行命令即可。运行shift命令时,位置变量就像一个可以移动的“指针”,每执行一次,位置变量指向的参数将会向移动一位
即使用shift命令后,位置变量 1的值等于使用命令前的 2的值,以此类推。随着shift命令的使用,位置变量$1的值会不断变化,直到移动到最后一个参数之后
Shift命令的作用是将所有的位置变量应用的参数往后移动一位