2011-11-27 49 views
4

我有一个while循环,它使用读取行读取文件中的行。 然后我想检查一下这行是否为空,我该怎么做? 我已经在这个网站上发现了关于带空格的行或关于变量的问题。如何检查文件中的某行是否为空bash

回答

6

您可以使用测试:

[ -z "$line" ] 

从bash的手册页:

-z字符串
真如果字符串的长度为零。

+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),那么没有引号的符号将不起作用。 –

+0

谢谢,有趣的,发现一个完整的解释[在这里#4](http://mywiki.wooledge.org/BashPitfalls) – Andomar

相关问题