2011-11-27 50 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

相關問題