【发布时间】:2018-05-22 18:52:54
【问题描述】:
我在一个目录中有 run.sh 脚本。我还有两个名为 d1.sh 和 d2.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