如何在Bash中运行子函数

时间:2015-07-01 15:46:08

标签: bash shell

如何在命令行中从脚本运行“子功能”?例如:

#script_1.sh
main_function() {
    sub_function() {
         echo "hello world"
    }
}

我尝试获取此文件并从另一个脚本调用该函数:

#script_2.sh
source script_1.sh

sub_function

但是我得到了

script_2.sh: line 3: sub_function: command not found

虽然我希望得到hello world

2 个答案:

答案 0 :(得分:5)

如此定义sub_function将在调用function后定义。 所以:

#script_1.sh
function() {
    sub_function() {
         #cmd
        }
}

#script_2.sh
source script_1.sh
function
sub_function

...应该有效...除了你应该重命名函数,因为它是一个保留字

答案 1 :(得分:4)

您的问题中缺少的步骤是首先调用function - 其操作是定义sub_function

请注意,sub_function不以任何方式“归属于”function - 其定义只是运行function的副作用。

P.S。我假设你并没有真正试图称之为function - 这是bash中的保留字。