2013-10-05 39 views
0

我正在寫一個bash腳本,並且我正在用僅有1個數字的3行文件讀取。我必須將每一行設置爲一個新變量。我不太清楚如何做到這一點,但是這是我現在做:讀取文件的多行,然後將每行設置爲不同的變量

VAR1=0 
    VAR2=0 
    VAR3=0 

    while read line 
    do 
      VAR1=$line 
      VAR2=$line 
      VAR3=$line 
    done <$FILE 

我得到的結果僅僅是對所有3個變量在文件的最後一行。任何幫助你都會很棒。

+0

不要認爲需要不同的變量,也可以是一個數組? – goji

回答

0

Nosid的答案你想要做什麼,但如果你真的需要一個數組,你可以做這樣的:

# populate ARRAY 
ARRAY=() 
while read LINE 
do 
    ARRAY+=("$LINE") 
done < test 

# subscripting 
echo ${ARRAY[0]} 
echo ${ARRAY[1]} 
echo ${ARRAY[2]} 

# looping 
for LINE in "${ARRAY[@]}" 
do 
    echo "$LINE" 
done 
+0

謝謝@Troy完美的工作! – sdv1225

+0

我很高興:)我也學到了一些關於bash陣列的知識。 – goji

+0

確保您接受並點贊您選擇的答案。 – goji

0

這可能會爲你(BASH)工作:

OIFS=$IFS; IFS=$'\n'; var=($(<file)); IFS=$OIFS 
for ((n=0;n<${#var[@]};n++)){ echo "\${var[$n]}=${var[n]}"; } 
0

我個人的解決方案稍有不同,可用於管道。

這工作,如果你知道輸出將每N線劃分(2這種情況下)

YOUR_COMAND | while read line; 
do 
    ((i++)) 
    lines[i]=$line 
    if [ $i = 2 ]; then  
    echo "You received new output: ${lines[1]} ${lines[2]}" 

    #do your stuff with all the lines you gathered 

    i=0; 
    fi  
done 
相關問題