获取shell脚本目录的父目录[重复]

Posted

技术标签:

【中文标题】获取shell脚本目录的父目录[重复]【英文标题】:Get parent directory of shell script's directory [duplicate] 【发布时间】:2017-04-09 10:57:58 【问题描述】:

我这里有一个 shell 脚本:

/node_modules/.bin/exec.sh

在 exec.sh 脚本中,我想获取该脚本所在目录的父目录的路径(不是 pwd/cwd!)。我可以像这样获取包含目录:

`dirname $0`

这将产生:

/node_modules/.bin

但我希望获得更高的目录,我只想获得

/node_modules

我在寻找答案时遇到了麻烦,我的猜测是:

`dirname $1`

只是一个猜测,不确定这是否正确。谁能解释一下如何做到这一点以及它是如何工作的?

【问题讨论】:

不,完全没有,这与cwd/pwd无关 @AlexanderMills 它与此有关。获取目标的父目录。然后获取那个目录的父目录。 不,它与包含脚本的目录有关,而不是当前工作目录或当前工作目录,它们可能非常不同......想象你像这样执行脚本../ ../exec.sh,谢谢 @AlexanderMills 实际上我从可能的重复项列表中选择了错误的答案。我现在撤回了我的近距离投票。 可以使用参数扩展..p='/node_modules/.bin/exec.sh'; echo "$p%/*/*" 【参考方案1】:

运行 dirname 两次(嵌套)。

~$ dirname $PWD
/home
~$ dirname `dirname $PWD`
/
~$ 

【讨论】:

这很接近,但我认为是 $(dirname `dirname $0`)【参考方案2】:

我相信答案是

$(dirname $(dirname "$0"))

不要忘记 "$0" 周围的双引号

【讨论】:

以上是关于获取shell脚本目录的父目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Linux+Shell获取及拷贝最新备份数据

shell

使用shell脚本创建多个目录[重复]

在与shell脚本相同的目录中创建文件夹[重复]

调用shell脚本时,获取脚本的当前目录

shell脚本获取绝对目录