Bash脚本可在其他目录中运行命令,无论级别如何

时间:2019-11-05 22:01:36

标签: bash

我有一个看起来像这样的目录结构

|- .ci
|- node_project
|- scripts
|- terraform

在scripts目录中,我想为build.shverify.shdeploy.sh之类的文件添加包装器脚本,但是,如果我们考虑build.sh,则内容可能类似于< / p>

#!/usr/bin/env bash

cd ../node_project
npm run build

只要您位于scripts目录中,它就可以使用。

我该如何创建一个脚本,该脚本也可以在项目根目录中以scripts/build.sh调用,甚至从项目外部以<some random path>/scripts/build.sh调用?

1 个答案:

答案 0 :(得分:1)

${BASH_SOURCE[0]}具有当前脚本的名称。获取脚本的目录,然后从那里开始。

cd "$(dirname "${BASH_SOURCE[0]}")"

cd ../node_project
npm run build

注意。如果用户通过任何相对路径,他们将无法再正确解析。