如何确认路径名是否存在?

如何确认路径名是否存在?

如何测试路径名是否存在?

以前我使用的是:

realpath -e /some/path

除非/some/path符号链接损坏,否则它会报告它不存在。

[ -e /some/path ]

产生类似的结果realpath

答案1

要检查是否/some/path存在,无论是作为可以完全解析的内容,还是作为损坏的符号链接:

if [ -e /some/path ] || [ -h /some/path ]; then
    echo '/some/path exists, possibly as a broken symbolic link'
fi

-h无论符号链接是否损坏,该测试都是正确的。还有一个-L与测试相同的测试-h(历史原因)。

-e如果无法找到给定的路径名​​及其所有已解析的符号链接,则测试失败。这就是为什么-h如果我们期望路径名的文件名部分是损坏的符号链接,我们可能必须在单独的测试中使用。

相关内容