2013-10-05 2 views
0

저는 bash 스크립트를 작성 중이며 각각 하나의 숫자로 된 3 줄의 파일을 읽고 있습니다. 각 줄을 새로운 변수로 설정해야합니다. 나는이 작업을 수행하는 방법을 아주 확실하지 않다 그러나 이것은 내가 지금 뭐하는 거지입니다 :파일의 여러 줄을 읽은 다음 각 줄을 다른 변수로 설정하십시오.

VAR1=0 
    VAR2=0 
    VAR3=0 

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

내가지고있어 결과는 3 개 변수의 파일에 바로 마지막 줄입니다. yould가 도움이된다면 좋을 것입니다.

+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

완벽하게 작동 한 트로이에게 감사드립니다! – sdv1225

+0

나는 기쁘다 :) 나는 bash 배열에 대해서 나 자신도 역시 배웠다. – goji

+0

선택한 답변을 수락하고 upvote하십시오. – goji

0

이 당신 (BASH)을 위해 일 수 있습니다

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

내 개인 솔루션은 약간 다르며 파이프에 사용할 수 있습니다.

당신은 출력 (이 경우 2) 모든 N 라인을 나눌 것을 알고있는 경우이 작동

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 
관련 문제