定义
函数名 () {函数体}
或者函数名称前面增加关键字function
function 函数名 {函数体}
eg:
#!/bin/bashfoo(){echo "hello world"}bar(){echo "hello shell"}foobar
执行shell脚本
chmod +x func.sh./func.sh
执行结果
hello worldhello shell
参数
在Shell 中的函数的圆括号里不能放置参数,函数传递参数的方式其实跟Shell 脚本传递命令行参数一样。需要把参数直接置于函数名字后面,参数名称是:$1,$2,$3…
#!/bin/bashfoo(){echo hello $1}bar(){echo hello $1 $2}foo worldbar bash shell
执行函数结果如下
hello worldhello bash shell
返回值
Shell 的函数却没办法做到。但是 Shell 的函数可以返回一个状态,有点类似一个程序或命令退出时会有一个退出状态,表明是否成功。Shell 函数要返回状态,也用 return 这个关键字
foo(){sum=$(($1+$2))return $sum}foo $1 $2echo $?
执行结果,变量 $? 包含前一次被运行的命令或函数的返回状态。
$ ./func.sh 1 45
变量作用范围
一个变量是“全局的”(global),意味着在脚本的任何地方都可以访问它。
我们也可以创建局部(local)变量。当我们在函数中创建局部变量时,这个变量就只能在这个函数中被访问。定义一个局部变量,我们只要在第一次给这个变量赋值时在变量名前加上关键字 local 即可( local 是英语“本地的”的意思)。
