2014-02-27 125 views
0

我想讀從/ proc文件一個特定的值,目前是在一個「而讀行」循環中完成,作爲scheleton:巴什 - while循環在一個文件中,並停止條件

while read line 
do 
    if [[ $line = *MATCHES STRING* ]]; then 
     for (( i=0 ; i<=$someVAR-1; i++)) 
     do 
      [if statement to check if the specific line is not equal with 0] 
      then [whatever] 
     done 
    fi 
done < "/proc/FILE" 

就這樣,我想進一步改善循環,這樣我可以做的if語句裏面的for循環返回大於0 的值所以停止條件應該是多少次像數:

if line matches string then 
for loop 
do 
use a variable to keep count that the conditions has been met 2 times. 

當發生這種情況時,循環應停止並顯示一條消息。

+0

一個例子可能會有所幫助。 – devnull

+1

在'if'語句中增加一個變量。循環後,測試變量,並使用「break」來停止循環。 – Barmar

+0

是否可以在文件&store結果行中grep「MATCHES STRING」? – anishsane

回答

1
while read line 
do 
    if [[ $line = *MATCHES STRING* ]]; then 
     count=0 
     for (( i=0 ; i<=$someVAR-1; i++)) 
     do 
      [if statement to check if the specific line is not equal with 0] 
      then count=$((count+1)) 
      fi 
     done 
     if [[ $count -ge 2 ]] 
     then break 
     fi 
    fi 
done < "/proc/FILE" 
+0

非常感謝Barmar!我將while計數移到了while循環之外,因爲我特別想讓它遍歷整個行和數據。 但是,你的回答非常有幫助! – user3144292

+0

你的問題說,如果發生這種情況,循環應停止。如果您在循環之外進行測試,如何停止循環? – Barmar