获取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脚本目录的父目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章