bash 中的“[ -h”和“[ -L”有什么区别?

asz*_*waz 4 bash

if [ -h "demo" ]; then
    echo "-h: true"
fi
if [ -L "demo" ]; then
    echo "-L: true"
fi
Run Code Online (Sandbox Code Playgroud)

我发现“-h”和“-L”都可以用来判断指定文件是否是链接。它们之间有什么区别?

Dav*_*ill 6

bash 中的“-h”和“-L”有什么区别?

它们的存在都是出于遗留原因,以便在不同版本的 Unix 之间兼容。

如果您运行的系统不符合最新标准,则可能缺少其中一项。

这两种形式都存在于单一 Unix 规范版本 3/POSIX 2004中,没有任何警告。

Solaris 的某些版本test仅支持-h, 并且(早在 2003 年)某些软件出于兼容性原因已改用-h

所以最好使用-h

资料来源:test -h 和 test -L 之间的差异,由Brian Campbell回答