if [ -h "demo" ]; then
echo "-h: true"
fi
if [ -L "demo" ]; then
echo "-L: true"
fi
我发现“-h”和“-L”都可以用来判断指定的文件是否是一个链接。它们之间有什么区别?
if [ -h "demo" ]; then
echo "-h: true"
fi
if [ -L "demo" ]; then
echo "-L: true"
fi
我发现“-h”和“-L”都可以用来判断指定的文件是否是一个链接。它们之间有什么区别?
bash 中的“-h”和“-L”有什么区别?
它们的存在都是出于遗留原因,以便在不同版本的 Unix 之间兼容。
如果您运行的系统不符合最新标准,则可能缺少其中一个或另一个。
两种形式都出现在Single Unix Specification version 3/POSIX 2004中,没有任何警告。
某些版本的 Solaris
test
仅支持-h
, 并且(早在 2003 年)出于兼容性原因,某些软件已切换到。-h
所以最好使用
-h
资料来源:test -h 和 test -L 之间的区别, Brian Campbell的回答
查看 AlmaLinux 8.7 安装:
man test
表示两个选项相同:man bash
只是为两个选项报告相同的帮助文本,而没有提及它们是相同的:从上面的 man 文本中,不清楚哪一个与其他发行版的兼容性最好。
正如@DavidPostill 已经指出的那样,需要进行研究以确定哪个选项具有最佳兼容性。