2013-07-31 1 views
1

아래의 코드에서 연관 배열 'originator'에 대한 두 번째 삽입은 첫 번째 삽입이 손실되도록 만듭니다. 첫번째 인서트가 성공적이라는 것을 확인합니다. 그러나 두 번째 연관 아이템을 'originators'에 넣으면 첫 번째 아이템은 비어 있습니다. 즉, 출력되고 빈 문자열입니다. 무슨 일이 일어날 지 모릅니다.연관 배열의 두 번째 삽입에서 데이터 손실

declare -A originators 

    while read -r line 
    do 
     if [ "$count" -ge "2" ]; 
     then 
      inner_count=0 
      #parse each line 
      if [ "$debug" = "1" ] ; then printf "%s\n" "$line" ; fi 

      for word in $line 
      do 

       if [ "$inner_count" = "1" ]; then tmp1="$word" ; fi 
       if [ "$inner_count" = "5" ]; then tmp1="$tmp1"" ---- ""$word" ;fi 
       inner_count=$((inner_count + 1)) 
      done  
       originators=(["$count"]="$tmp1") 
      echo "$count ${originators["$count"]}" 

     fi 
    count=$((count + 1)) 
    done < <(batctl tg) 

답변

2

당신은 참으로이 라인의 배열을 덮어있어 :

originators=(["$count"]="$tmp1") 

이 변경되어야합니다

originators+=(["$count"]="$tmp1") 

배열에 새 값을 추가합니다이 += 연산자 .

+0

많은 솔루션에 감사드립니다. – user1658296

+0

다행 이니 다행입니다. – anubhava

관련 문제