Shell 函数的使用

函数的定义方式

  • function 关键字,可以不需要括号
    function  func_name {
    command 1
    command 2
    ...
    command N
    }
  • 没有 function 关键字,需要括号
    func_name() {
    command 1
    command 2
    ...
    command N
    }

函数的使用方式(调用)

  • 直接使用函数名调用,不需要括号,可以将其想象成 shell 中的一条命令
    $ func_name [arg1 arg2 ... argN]
  • 函数内部可以直接使用 $1 $2 ... $N
    func_name() {
    echo $1
    echo $2
    }

    函数的返回值

  • return 使用 return 返回值只能 返回1~255的整数,通常只是用来供其他地方调用获取状态,因此通常仅返回0或1, 非零表示失败
  • echo 可以返回任何字符串结果,通常用于返回数据,比如一个字符串值或者列表值

    全局变量与局部变量

  • 全局变量

    • 不做特殊声明,Shell 中变量都是全局变量
    • Tips:大型脚本程序中慎用全局变量

    vim test_local1.sh

    #!/bin/bash
    var1="Hello World"
    function test {
    var2=120
    }
    [wonbin@localhost shell]$ sh test_local.sh 
    Hello World
                        //  为空 因为test 函数没有执行
    [wonbin@localhost shell]$ 

    vim test_local2.sh

#!/bin/bash
var1="Hello World"
function test {
    var2=120
}
echo $var1
echo $var2
test   //  var2 变成全局变量
echo $var1
echo $var2
function test2 {
  echo $var1
  echo $var2

}
test2

运行结果

[wonbin@localhost shell]$ sh test_local2.sh 
Hello World

Hello World
120
Hello World
120
[wonbin@localhost shell]$
  • 局部变量
    • 定义变量时,使用 local 关键字
    • 若函数内外存在同名变量,则函数内部覆盖外部变量

vim test_local3.sh

#!/bin/bash
var1="Hello World"
function test {
    local var2=120   // 仅在函数内部有效
}
test 
echo $var1
echo $var2

执行结果

[wonbin@localhost shell]$ sh test_local3.sh 
Hello World

[wonbin@localhost shell]$

函数库

为什么要定义函数库,将一些通用的功能封装起来,方便其他用到的地方调用

  • 经常使用到的重复代码封装成函数文件
  • 一般不直接执行,而是其他脚本调用
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!