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

如何使用bash检查文件中的一行是否为空,bash,Bash,我有一个while循环,它使用readline从文件中读取行。 然后我想检查这行是否是空的,我怎么做? 我已经在这个网站上找到了关于带空格的行或变量的问题。您可以使用测试: [ -z "$line" ] 从bash手册页: -z字符串 如果字符串的长度为零,则为True -n运算符检查字符串是否为空: while read line do if [ -n "$line" ] echo $line fi done < file.txt 噢,糟糕!

我有一个while循环,它使用readline从文件中读取行。 然后我想检查这行是否是空的,我怎么做? 我已经在这个网站上找到了关于带空格的行或变量的问题。

您可以使用测试:

[ -z "$line" ]
从bash手册页:

-z字符串
如果字符串的长度为零,则为True


-n
运算符检查字符串是否为空:

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

噢,糟糕!打败我!干得好如果你写了
[-n“$line”]
,我会很高兴的。我怀疑
bash
确实允许您编写的东西工作(尽管我不确定我是否理解它在那里而不是其他地方工作的逻辑),但我已经很老练了,如果没有双引号,我会感到不舒服。如果您使用其他相关的shell(如Bourne和-我相信-Korn),那么没有引号的符号将不起作用。谢谢,很有趣,找到了完整的解释
if -n [ "${line//[[:space:]]/}" ]