如何使用bash检查文件中的一行是否为空

4
我有一个while循环,使用readline从文件中读取行。 然后我想检查该行是否为空,我该如何做? 我已经在此站点上找到了关于带空格的行或关于变量的问题。
2个回答

6

您可以使用这个测试:

[ -z "$line" ]

来自bash手册:

-z string
如果string的长度为零,则为真。


1
哦,糟糕!你比我先完成了!干得好! - tekknolagi

1

-n 操作符用于检查字符串是否不为空:

while read line    
do
    if [ -n "$line" ]
        echo $line
    fi
done < file.txt 

如果你想排除只包含空白字符的字符串,可以使用bash的模式替换${var//find/replacement}。例如:

if -n [ "${line//[[:space:]]/}" ]

1
如果你写[ -n "$line" ],我会很高兴。我怀疑bash确实允许您编写可以工作的代码(虽然我不确定它在那里和其他地方的逻辑是什么),但我还是老派得不舒服没有双引号。如果您使用其他相关的Shell(例如Bourne和-我相信-Korn),那么没有引号的符号不起作用。 - Jonathan Leffler
谢谢,很有趣,我在这里找到了完整的解释点此查看#4 - Andomar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接