在Bash脚本中调用函数

时间:2016-09-22 06:11:44

标签: bash function shell scripting external

我已经做了足够的搜索来找到这个,但没有运气。我正在尝试编写一个Bash脚本,该脚本必须调用在其他地方定义的函数。

例如,我有一个shell test.sh

#!/bin/bash

# Shell - test.sh

function1() {
   echo "Inside function 1"
}

function1
function2

exit 0

我有一个不同的文件,其中包含function2,

$ cat function2

function2() {
   echo "Inside function 2"
}

现在,当我运行test.sh时,    (Q1)它如何知道在哪里找到function2?    (Q2)没有显示功能2的回声输出

任何输入都会很棒。

嗨,谢谢你的回答。但是,令我惊讶的是,当我使用" $。/ test.sh"执行shell时,我得到"内部函数1"的输出。如果shell没有找到" function2",它应该抛出一个错误,"函数找不到或者"。我觉得以某种方式调用了函数但是没有显示消息。

谢谢, 拉维

2 个答案:

答案 0 :(得分:0)

继续发表评论,source中的file2 file1,例如

#!/bin/bash

# Shell - test.sh

function1() {
    echo "Inside function 1"
}

if [ -r "file2" ]  ## make sure file2 is readable by file1
then
   . "file2"       ## source file2 in file1.
                   ## Yes the . is a command! Check 'help .'
else               ## otherwise show error and exit
    printf "error: file2 not readable by file1.\n" >&2
    exit 1
fi

function1
function2

exit 0

答案 1 :(得分:-1)

您必须在具有功能1的文件中导入具有完整路径的功能2的其他文件。这样您就可以访问文件2的功能。