if 条件中'-z "${line}"' 的含义

if 条件中'-z "${line}"' 的含义

以下代码的 if 条件中 -z "${line}" 是什么意思:

while read line
do
if [ -z "${line}" ]; then
echo "file empty "
exit
fi
done < $FILE

请让我知道 if 条件到底检查什么。

答案1

它正在测试变量$line(此处相当于${line})是否为空(不包含字符)。当read操作到达文件末尾时,您会遇到这种情况。

后续评论询问它的z用途(它意味着什么)。这[运算符对应于test公用事业,POSIX 声明

-z 细绳
如果字符串 string 的长度为 True;否则为假。

所以-z最初选择 可能是因为它的助记价值。最旧的版本中没有提供它test(Unix 7th, 1979),但出现在第8版(1985):

-z s1    true if the length of string s1 is zero.

因为它在第 7 版中没有记录,但大约在同一时间出现在 3BSD 中(文件日期为 1979 年 2 月,位于 CSRG CD1 中),因此它似乎来自 BSD。

并非所有选项的test字母和含义之间都有明显的关系。这个来得比较早,所以可以选择一个与意思相关的字母。

相关内容