2014-01-10 62 views
0

我理解下面的格式...BASH:「while read line ???」

while read line 
do 
    etc... 

不過,我這個昨天看到的和一直無法弄清楚什麼var將在以下幾點:

while read pkg var 
do 
    etc... 

感謝

+0

如果你不明白第二個代碼片段,那麼你也不理解第一個! –

+2

'幫助閱讀'可能會有用。 – jthill

回答

2

內置的read將讀取多個空格分隔的值(或者真的被$IFS中的任何值分隔)。

echo a b c | (read x y z; echo "$y") 
#=> b 

如果有比傳遞到read變量更多的領域,最後一個變量獲得該行的其餘部分。

+0

我錯過了之前在腳本中設置的IFS值。謝謝。 – imagineerThat

2

while循環將逐個讀取var,但將最後一部分分配給一個var。

例如,我有這樣一個文件:

a b c d 

運行命令

$ while read x y 
do 
    echo $x 
    echo $y 
done < file 

Resule時:

a 
b c d 

你會得到 「B C d」 至$ Y。

當然,如果你只分配一個var(line),那麼$ line就會得到整條線。