编写可访问相对于它的文件的shell脚本的最佳方法是什么,而无论我从哪里调用它都无关紧要? “简单”是指最简单/推荐的方法,可在不同的系统/ shell 之间使用。

示例

假设我有一个~/MyProject文件夹,其中包含子文件夹scripts/files/。在scripts/中,我有一个shell脚本foo.sh,它想要访问files/中的文件:

if [ -f "../files/somefile.ext" ]; then
    echo "File found"
else
    echo "File not found"
fi

如果我执行cd ~/MyProject/scripts && ./foo.sh,它将可以正常工作,但是如果使用cd ~/MyProject && scripts/foo.sh,它将失败。

最佳答案

您通常可以这样做:

mydir="$(dirname $0)"

获取运行脚本的目录。

然后只需使用它来找到您的文件。

09-16 10:08