Shell 函数


函数是用于完成一个特定任务的一组有关联命令。


函数作用是为了复用代码。函数定义必须放在函数调用之前,否则函数调用会被当作外部命令。

函数定义格式有2种,如下:

function 函数名 {
  命令
  ...
}

函数名() {
  命令
  ...
}

一个函数可以写在一行,这时命令后面要加上;

函数调用格式:

函数名 参数1 参数2 ...

函数参数

函数中通过位置来使用调用方传递进来的参数,如$1表示第1个参数,$2表示第2个参数,以此类推。

函数返回值

return [n]命令用于终止函数的执行,并返回值n,如果忽略n,则返回值为最后执行命令的返回值。返回值被赋值给变量$?

函数返回值是一个小整数,也称为exit status,exit status为0表示成功,其它值表示失败。

如果函数要把一个字符串类型的数据传给调用方,函数可以将值存放到全局变量,调用方再从全局变量中取。

本地变量

本地变量(local variable)是只在代码块中可见的变量。函数中的本地变量只在函数中可见。声明本地变量是在变量名前加local关键字。

#!/bin/sh
g=""
function max2 {
  local v
  v=$(( $1 > $2 ? $1 : $2 ))
  g=$v
}

max2 2 5
echo $? # 0
echo $v #
echo $g # 5

全局变量g用来将最大值从函数max2传给调用方。