2013-08-28 97 views
47

我想編寫一個Bash腳本來處理文本,這可能需要一個while循環。如何擺脫Bash中的循環?

例如,while循環在C:

int done = 0; 
while(1) { 
    ... 
    if(done) break; 
} 

我想寫一個bash腳本相當於。但我通常使用,因爲所有的經典例子我看了都表明,是這樣的:

while read something; 
do 
... 
done 

它沒有提供任何有關如何執行while(1){}break;,這是明確界定,並廣泛用於在C的幫助,我不必爲標準輸入讀取數據。

任何人都可以幫助我與上面的C代碼Bash相當嗎?

回答

66

這與bash沒有什麼不同。

done=0 
while : ; do 
    ... 
    if [ "$done" -ne 0 ]; then 
     break 
    fi 
done 

:是無操作命令;其退出狀態始終爲0,因此循環將一直運行,直到done被賦予一個非零值。


有很多方法,你可以設置並以退出循環測試done價值;我上面展示的應該可以在任何POSIX兼容的shell中工作。

25
while true ; do 
    ... 
    if [ something ]; then 
     break 
    fi 
done 
+1

你不需要圍繞'true'的括號。 – chepner

+0

謝謝@chepner,非常感謝。 – lurker

+0

謝謝。你的回答是對的,但我只能接受一個。你值得讚賞。 – lulyon