2012-11-07 2 views
4

내가 만들고 동적 배열을 채우기 위해 싶습니다하지만 이런 식으로 작동하지 않습니다동적으로

i=0 
while true; do 
    read input 
    field[$i]=$input 
    ((i++)) 
    echo {$field[$i]} 
done 
+0

실제 문제는 무엇입니까? 약간의 사소한 문제는 제외하고 코드가 좋습니다. – ormaaj

+0

간단한 변수처럼 작동합니다. 입력이 test이면 echo : {test [0]} – Sadiel

+0

거기에 'echo'가 표시되지 않습니다. 방금 배열을 추가하고 아무 것도하지 않는 무한 루프가 있습니다. ''$ test ''확장은''$ {test [0]}' '('test'가 배열이 아니더라도) 항상 유효합니다. – ormaaj

답변

7

과제는 정상입니다. 조회가 잘못되었습니다.

echo ${field[$i]} 
2
i= field=() 
while :; do 
    read -r 'field[i++]' 
done 

하나의 방법입니다. mapfile이 또 하나입니다. 또는 these 중 하나입니다. 그러나 게시 한 내용은 유효합니다. 이 같은

4

시도 뭔가 : 더 이상 입력 (키보드에있는 파일, ^D의 끝)를 사용할 수없는 경우 그것은 읽는 중지

#! /bin/bash 
field=() 
while read -r input ; do 
    field+=("$input") 
done 
echo Num items: ${#field[@]} 
echo Data: ${field[@]} 

, 다음 요소의 수 읽기 전체 배열을 인쇄합니다.