【问题标题】:Calling method declared in another bash file调用在另一个 bash 文件中声明的方法
【发布时间】:2021-05-28 09:18:13
【问题描述】:

我有两个 bash 文件,位于不同的文件夹中。我想从另一个 bash 文件 b 中调用 bash 文件 a 中的 abc() 方法。为此,我可以进行导入。但是如果这段代码在生产中使用呢?我不能简单地提供我在本地创建的文件。

例子:

  • 我正在运行的“第三个”主 bash 文件

    #!/bin/bash
    .  /Users/r/r1-tests/r/fourth
    
    
    abc
    
  • 名为“fourth”的bash文件,其中声明了方法

    #!/bin/bash
    
    function abc()
    {
        echo "hello"
    }
    

我可以在“第三”中使用“不”导入吗?

【问题讨论】:

  • 你好,你的意思是你想从third打电话给abc(),不包括fourth
  • 我的意思是这将在 Git 中进行检查。我可以在本地使用 Import。但是,如果这是一个偏远的位置,我该如何照顾呢?
  • 你的意思是你不能修改third文件?
  • 您如何想要它在没有您要执行的代码的文件是本地的情况下工作?告诉我们您希望它如何查找和加载代码的具体想法,以便我们告诉您如何让它做到这一点;现在,不清楚你想要什么——相反,你只描述了你想要什么。
  • 是的,我的意思是我不能简单地将本地创建的文件“第四”的路径添加到“第三”中。如果我的代码被推送到 Git,这可能是我会遇到的一个问题,其中代码需要一个从 Git 位置获取的文件,而不是从我的本地文件获取的文件。我说得有道理吗?换句话说,如果我在 Git 中签入我的代码,我该如何修改这个文件?

标签: bash


【解决方案1】:

但是如果这段代码在生产中使用呢?

然后也包含它。

您的问题似乎不包括文件,而是包括不使用绝对路径的文件。所以使用 relative 路径包含它。相对于..例如当前文件:

. "${BASH_SOURCE%/*}"/dir/with/fourth

或者相对于 git 仓库:

. "$(git rev-parse --show-toplevel)"/some/dir/dir/with/fourth

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多