如何在 shell 脚本中引用相对于当前目录的文件?

如何在 shell 脚本中引用相对于当前目录的文件?

我想运行一个复制文件的 shell 脚本。我不喜欢对该文件进行绝对引用。

myproject/target/myapp.jar
myproject/docs/copy.sh

copy.sh 包含: scp ~/Projects/myproject/target/myapp.jar user@myip:/var/www

问题:我如何运行copy.shshell 脚本并引用myapp.jar相对项?比如先浏览一个文件夹,然后进入/target

答案1

您希望从myproject/docs/copy.sh2 个目录向上并进入目标。您可以使用 ... 来执行此操作

../../target/myapp.jar

这虽然……

scp ~/Projects/myproject/target/myapp.jar user@myip:/var/www

我会使用一个变量,并在脚本开头或从配置中设置它。scp当其上方有“项目”时,您不能在里面使用 ../../。

这将为您提供脚本所在的目录:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

相关内容