我一直在使用类似以下的命令来获取特定脚本在执行时的目录,无论它是从哪里执行的:
MYDIR=$(dirname $(readlink -f $0))
Run Code Online (Sandbox Code Playgroud)
获取脚本目录上方两个父目录的规范路径的类似单行是什么?我试过这样的事情:
MYDIR=$(dirname $(readlink -f $0/../..))
MYDIR=$(readlink -f $(dirname $(readlink -f $0)/../..))
Run Code Online (Sandbox Code Playgroud)
正如您所知,我不是 bash 大师。我该怎么做?
你需要给/../..
最后一个readlink
,而不是dirname
:
$(readlink -f "$(dirname "$(readlink -f "$0")")/../..")
Run Code Online (Sandbox Code Playgroud)
你的脚本导致dirname path/to/script/../..
被执行,输出“ path/to/script/..
”,它readlink
拒绝规范化,因为诸如file/..
在 Linux 中无效的构造,并且该-f
选项要求所有组件都存在。(readlink -m
会起作用,因为它不检查任何路径组件的存在。)
归档时间: |
|
查看次数: |
5654 次 |
最近记录: |