获取shell脚本目录的父目录

Ale*_*lls 7 bash shell

我这里有一个shell脚本:

/node_modules/.bin/exec.sh
Run Code Online (Sandbox Code Playgroud)

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

`dirname $0`
Run Code Online (Sandbox Code Playgroud)

这将产生:

/node_modules/.bin
Run Code Online (Sandbox Code Playgroud)

但我希望在一个目录更高,我只想得到

/node_modules
Run Code Online (Sandbox Code Playgroud)

我无法找到答案,我的猜测是:

`dirname $1`
Run Code Online (Sandbox Code Playgroud)

但只是一个猜测,不确定这是否正确.任何人都可以解释如何做到这一点以及它是如何工作的?

Sha*_*rad 8

运行dirname两次(嵌套).

~$ dirname $PWD
/home
~$ dirname `dirname $PWD`
/
~$ 
Run Code Online (Sandbox Code Playgroud)


Ale*_*lls 5

我相信答案是

$(dirname $(dirname "$0"))
Run Code Online (Sandbox Code Playgroud)

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