如何包含来自其他文件夹的Shell脚本中的函数

时间:2019-04-14 17:24:43

标签: shell directory-structure

我具有类型

的目录结构
|--bringup-scripts
|  |--prep.sh
|--scripts
|  |--i2c0.func
|  |--bit.func

prep.sh 如下所示:

#!/bin/bash

. ../scripts/i2c0.func

i2c0.func 看起来像这样:

#!/bin/sh

. ./bit.func

因为 i2c0.func bit.func 有依赖性,如果我运行 bringup-scripts 文件夹中的> prep.sh ,它会引发错误,提示

  

./ bit.func:没有这样的文件或目录

我应该如何解决?

2 个答案:

答案 0 :(得分:1)

您可以做的是不使用相对路径,而是在 prep.sh 文件中为所有脚本定义一个起点,如下所示:

Node

对于 scripts 目录中的每个脚本,您还必须包括HashMap作为前缀,例如:

i2c0.func

#!/bin/bash

export ROOT_DIR="$(dirname $PWD)"

. $ROOT_DIR/scripts/i2c0.func

答案 1 :(得分:0)

我不知道是否有标准的方法可以执行此操作,但是您可以尝试像这样更改 i2c0.func

#!/bin/sh

. ../scripts/bit.func

尽管请注意 prep.sh 获取其调用者的工作目录,所以仅当您从bringup-scripts/scripts/运行它时,它才能工作。