以下代码的 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
字母和含义之间都有明显的关系。这个来得比较早,所以可以选择一个与意思相关的字母。