在脚本中,我进入$0了可能的相对路径。为了将其转换为绝对值,我发现了我不理解的解决方案:
abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
我的问题是内部的魔法${0%/*}和${0##*/}。看起来前者提取目录名,而后者提取文件名,我只是不知道如何。
@Shawn:1个非常好的评论表决,因为您引入了正确的思想:“这使用了参数扩展,但对我不起作用”。该
—
D4RIO 2011年
dirname实用程序在这里很有用。
mywiki.wooledge.org/BashFAQ/028和cyberciti.biz/faq/…说
—
Joel Purra 2014年
BASH_SOURCE的要好于$0,因为可以$0输入用户键入的命令,而该命令可能不是当前正在执行的脚本。
readlink -f $0来获取规范路径。