2012-09-25 60 views
0

我有while循環在我sctipt下面的代碼:TMP_FILE的BASH:飼養文件while循環

TMP_FILE=`mktemp` 
some_script.sh | grep aa > $TMP_FILE 
while read i 
    do 
     echo $i 
     number=`ssh somehost cat somefile | grep 11 ` 
     echo $number 
    done < $TMP_FILE 

內容是這樣的:

hostname1 AB_CDEF_JH10 
hostname2 BC_DEF_JK19 
... 

在這種情況下,腳本正常工作只有一個循環傳遞,從TMP_FILE獲取第一行。之後,腳本退出。有什麼想法,爲什麼它不想處理除了第一個以外的其他線?

+0

無用的使用cat:'ssh -n somehost grep 11 somefile'。 – Jens

回答

3

嘗試將-n選項傳遞給ssh以防止其從標準輸入讀取。

默認情況下,ssh從stdin(在本例中爲您的文件)中讀取並將其轉發到在遠程主機上運行的命令的stdin。結果,你的整個文件被ssh消耗,循環只執行一次!

+0

謝謝。這對我有效。 –

+1

在這種情況下,爲什麼要使用'$ TMP_FILE'?只需將它管入「while」循環。 – Jens