我一直在使用类似以下的命令来获取特定脚本在执行时的目录,无论它是从哪里执行的:
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 次 |
| 最近记录: |