【问题标题】:How to source more than one bash script from a folder in another script so I can use functions from both of that scrips? [duplicate]如何从另一个脚本的文件夹中获取多个 bash 脚本,以便我可以使用这两个脚本中的函数? [复制]
【发布时间】:2018-05-22 18:52:54
【问题描述】:

我在一个目录中有 run.sh 脚本。我还有两个名为 d1.shd2.sh 的脚本位于其名为 deep 的子目录中。我想在 run.sh 脚本中同时获取 d1.sh 和 d2.sh,所以我可以使用存储在 d2.sh 中的“测试”函数。

run.sh 的代码如下所示:

#!/bin/bash

source ./deep/*

test

d1.sh

#!/bin/bash

echo -e "d1 is loaded"

d2.sh

#!/bin/bash

echo -e "d2 is loaded"

test() {
    echo -e "test passed!"
}

我用命令执行 run.sh

bash run.sh

我得到输出:

d1 is loaded

所以看起来 d1.sh 脚本正在加载,但 d2.sh 没有。我的问题是,为什么会发生这种情况,我应该如何加载存储在 ./deep 文件夹中的所有脚本?

【问题讨论】:

  • source 只接受一个脚本。其余参数将传递给脚本。所以它只会获取它看到的第一个脚本并将所有其他文件名视为第一个脚本的参数。使用循环或单独获取每个脚本。

标签: linux bash shell scripting


【解决方案1】:

试试这个,

#!/bin/bash

for file in ./deep/*;
  do
      source $file;
 done

【讨论】:

  • 像魅力一样工作!你能告诉我如何对两个文件夹做同样的把戏吗?假设我有文件夹 ./deep 和 ./deeper 我是否必须创建两个循环,或者我可以使用一个循环来执行它并将路径存储在数组或其他东西中?
  • 你可以在当前文件夹的所有目录中找到所有以sh结尾的文件然后source,脚本如下,`for file in $(find . -type f -name "*.sh" );做源 $file;完成
猜你喜欢
  • 1970-01-01
  • 2017-01-26
  • 2012-06-05
  • 2015-02-12
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 2019-09-03
相关资源
最近更新 更多