Shell语言用例

bash函数的搜索顺序与重载

2018-10-17  本文已影响0人  CodingCode

bash函数的搜索顺序与重载

bash里面定义了同名的函数,哪一个有效呢?
答案是:后面定义的覆盖前面定义的。

例子1:

通用函数调用。

$ cat test.sh
#!/bin/bash

function foo() {
    echo "11111111"
}

foo

$ test.sh 
11111111

例子2:

定义一个同名函数,后面的会覆盖前面定义的。

$ cat test.sh
#!/bin/bash

function foo() {
    echo "11111111"
}
function foo() {
    echo "22222222"
}

foo

$ test.sh 
22222222

例子3:

调用函数定义在common模块里面(func.sh)。

$ cat func.sh 
#!/bin/bash

function foo() {
    echo "111111111"
}

$ cat test.sh
#!/bin/bash

. func.sh

foo

$ test.sh 
111111111

例子4:

定义同名函数在common模块(func.sh)里,和外部模块(test.sh)

$ cat func.sh 
#!/bin/bash

function foo() {
    echo "111111111"
}

$ cat test.sh
#!/bin/bash

. func.sh

# The foo() function defined in func.sh will be override.
function foo() {
    echo "22222222"
}

foo

$ test.sh 
22222222

这个设计真的非常好用,有点类似函数重载的样子;比如我们在公告文件里定义common的函数,然后在各自的脚本里面,如果实现不一样,则重载common里面的函数即可。

上一篇下一篇

猜你喜欢

热点阅读