2015-12-21 45 views
0

我有一個包含像幾句話的文件:通行證從文件的多個參數while循環殼牌

server1 location1 
server2 location2 

我需要在一個while循環通過這些。

我們如何將它們分配給兩個單獨的變量?像這樣的東西可能是

while read server,location 
do 
echo $server is in $location 
done <file 

我能夠使用1變量非常好,但無法弄清楚這一個。

任何幫助,將不勝感激。

回答

1

你需要的變量,而不是逗號之間使用空間:

while read -r server location 
do 
echo "${server}" is in "${location}" 
done <file 

注意,第一個字被讀入server和「一切」將進入location。所以,如果你的文件恰好包含兩個以上的話,那麼你可能想用一個虛擬變量忽略其它:

while read -r server location dummy 
do 
echo "${server}" is in "${location}" 
done <file 
+0

您是否可以用解析整個文件重新'廣告'沒有放棄其餘的線?我認爲這就是OP所追求的。 – mhawke

+0

我編輯了這篇文章以清楚說明(你可以從編輯歷史中看到OP意味着要問什麼)。它看起來像你在說什麼。但這是由於問題的格式不好造成的。抱歉! –

+0

我可能會錯過某些內容,但在編輯歷史記錄中看不到這些內容。我看到_you_編輯過的問題不是OP? – mhawke

0

我有點生疏shell腳本,所以我懷疑,這是最好的這樣,但你可以做這樣的:

set $(cat file) 
while [ $# -gt 0 ] 
do 
    echo $1 is in $2 
    shift 2 
done 

另一種方法是使用awk

awk '{for (i=1; i<NF; i+=2) printf "%s is in %s\n", $i, $(i+1);}' file