![shell脚本“while”条件中的“-h”参数](https://linux22.com/image/171294/shell%E8%84%9A%E6%9C%AC%E2%80%9Cwhile%E2%80%9D%E6%9D%A1%E4%BB%B6%E4%B8%AD%E7%9A%84%E2%80%9C-h%E2%80%9D%E5%8F%82%E6%95%B0.png)
我试图理解一个已经写好的 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
不再引用符号链接。