如何测试路径名是否存在?
以前我使用的是:
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
如果我们期望路径名的文件名部分是损坏的符号链接,我们可能必须在单独的测试中使用。