美文网首页Shell语言用例
bash函数的搜索顺序与重载

bash函数的搜索顺序与重载

作者: CodingCode | 来源:发表于2018-10-17 19:03 被阅读0次

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里面的函数即可。

相关文章

  • bash函数的搜索顺序与重载

    bash函数的搜索顺序与重载 bash里面定义了同名的函数,哪一个有效呢?答案是:后面定义的覆盖前面定义的。 例子...

  • c++之重载函数

    函数重载:1.函数名相同2.函数参数个数不同,参数顺序不同,参数类型不同 注意:1.函数重载与返回值类型无关。2....

  • Kotlin基础之消除函数重载

    先来复习一下java中的函数重载函数名称相同与返回值无关参数个数不同参数顺序不同 我们来看,我定义了3个重载的函数...

  • C++函数重载

    函数重载的关键是函数参数的数目,或类型,或顺序不同。

  • C++学习笔记

    重载函数 定义:函数名相同,参数个数、参数类型、参数顺序不同的多个函数我们称为函数重载 构成条件: 返回值不同不构...

  • 函数重载(Overload) 默认参数

    函数名完全相同,但参数个数,参数类型和顺序不同的函数,彼此构成函数重载.C语言不支持函数重载. 规则 函数名相同 ...

  • C++之函数重载(下)

    重载与指针 函数重载遇上函数指针将重载函数名赋值给函数指针时根据重载规则挑选与函数指针参数列表一致的侯选者严格匹配...

  • 函数重载

    重载函数是说:声明了几个功能类似的同名函数,他们的参数个数不同,或者参数类型不同,或者参数顺序不同。函数重载常用来...

  • android阿里面试java基础锦集

    1.重载函数的签名(区别是否是重载函数) 方法名+参数类型+参数顺序(返回值不是) 2.finalize的工作原理...

  • 函数override/overload/overwrite

    overload重载:多个函数同一函数名不同参数类型不同参数个数不同参数顺序,即函数重载。 在同一类内多个函数名相...

网友评论

    本文标题:bash函数的搜索顺序与重载

    本文链接:https://www.haomeiwen.com/subject/honrzftx.html