Bash-在自己的文件夹中执行脚本时运行脚本



我有一个名为my-script.sh的bash脚本,位于从调用/执行该脚本的根目录的2级文件夹中

/folder1
/folder2/
- my-script.sh
- do-it.sh

my-script.sh

#!/bin/bash
./do-it.sh

如果我从根文件夹执行my-script.sh,它会失败,因为它试图在同一文件夹中找到do-it.sh

folder1/folder2/my-script.sh: line 3: ./do-it.sh: No such file or directory

如果我想正确地执行my-script.sh脚本,我必须先进入folder2,然后他们执行

cd /folder1/folder2
./my-script.sh

有没有一种方法可以像从folder2执行一样从根文件夹执行它?

为了让我的脚本在任何地方运行,我通常会添加此行以获取包含脚本的文件夹

script_folder="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
$script_folder/my-script.sh

我使用dirname$0找到了一个简单快捷的解决方案

我的脚本.sh

#!/bin/bash
./$(dirname $0)/do-it.sh

从某个目录运行脚本的最简单方法是在运行脚本时简单地提及该目录,因此在您的情况下:

无论您身在何处,都希望运行/folder1/folder2文件夹中的脚本:

sh /folder1/folder2/my-script.sh

无论你在哪里,你都想运行根文件夹中的脚本:

sh /my-script.sh

do-it.sh而言:您可以在根文件夹中创建一个do-it.sh,其中包含以下内容:

#!/bin/bash
sh /folder1/folder2/do-it.sh

最新更新