我试图理解一个已经写好的 Shell 脚本,并且遇到了以下行。
while [ -h "$SOURCE" ];
我需要知道的是-H
至于附加信息:
$SOURCE = ./my-script.sh
答案1
不是关键字-h
的选项while
,而是[
(and test
) 实用程序的选项。该选项的含义在 shell 的test
、或手册中进行了描述[
(因为这些通常是内置实用程序),请参阅man test
。
它是标准test
和 的选项[
以及 POSIX 标准描述它像这样:
-h pathname
如果
pathname
解析为符号链接的现有目录条目,则为 True。如果pathname
无法解析,或者pathname
解析为不是符号链接的文件的现有目录条目,则返回 False。如果 的最后一个组成部分pathname
是符号链接,则不遵循该符号链接。
简而言之,它评估为真的如果给定的路径名是符号链接,那么循环while
将一直循环,直到变量中的值SOURCE
不再引用符号链接。