通过子目录中的文件链调用Shell方法

时间:2017-11-25 13:32:44

标签: shell methods call chain subdirectory

我尝试使用以下结构调用文件到文件的方法:

/root /subDir /subSubDir inSubSub.sh inSub.sh inRoot.sh

文件内容:

inRoot.sh:

#!/bin/bash
source ./subDir/inSub.sh
subMethod;

inSub.sh:

#!/bin/bash
source ./subSubDir/inSubSub.sh
subMethod () {
    echo "I'm in sub"
}
subSubMethod;

inSubSub.sh:

#!/bin/bash
subSubMethod () {
    echo "I'm in subSub"
}
subSubMethod;

运行 $ ./inRoot.sh

的结果
subDir/inSub.sh: line 2: subSubDir/inSubSub.sh: No such file or directory
subDir/inSub.sh: line 6: subSubMethod: command not found
I'm in sub

因此,它适用于第一次通话,但不会更深入。

btw:使用。 ./而不是 source ./返回相同的

如果可能的话,如何做到这一点?

1 个答案:

答案 0 :(得分:0)

你必须像那样改变你的inSub.sh

cat ./subDir/inSub.sh

#!/bin/bash
var="${BASH_SOURCE[0]}"
source "${var%/*}"/subSubDir/inSubSub.sh
subMethod () {
  echo "I'm in sub"
}
subSubMethod;