2015-01-28 2 views
0

두 루프의 숫자를 하나의 배열에 저장하고 평균을 취하는 방법은 무엇입니까?for 루프에 두 세트의 범위를 제공하는 방법

#!/bin/bash 
START_se1=55761 
END_se1=55770 
START_set2=55900 
END_set2=55917 
#set1 
for ID in {$START_set1..$END_set1} 
do 
    myarr1=($(echo ${ID})) 
done 

#set2 
for ID in {$START_set2..$END_set2} 
do 
    myarr2=($(echo ${ID})) 
done 

app=("${myarr1[@]}" "${myarr2[@]}") 
echo $app 

이 코드는 루프 myarr1=() 전에 배열을 초기화하고 myarr1[${#myarr1[@]}]=${ID}를 사용하여 그것을 채우기 55,770

감사

+0

은 아마 관련 : [? 내가 bash는 변수에 의해 정의 된 번호의 범위를 반복 할 방법] (http://stackoverflow.com/q/169511/1983854). 사실 일지 모르겠다면 – fedorqui

+0

명령 실행'$ (...)'을 실행할 필요가 없습니다. 그냥 id를 할당하십시오. '{$ START_set1 .. $ END_set1} '정말 효과가 있습니까? 그렇다면 어느 쉘이 배시 뒤에 숨어 있습니까? - 좋아 - 뭔가 배웠어 :) –

답변

0

입니다 myarr1 만 마지막 ID를 제공합니다. 입력 한 후 echo ${myarr1[@]}으로 인쇄하십시오. 도움이 될 것입니다.

업데이트 : 오타, 목록 및 액세스 오류가 있습니다. 이 스 니펫을 고려해보십시오.

#!/bin/bash 
START_set1=55761 # typo 
END_set1=55770 # typo 
START_set2=55900 
END_set2=55917 

#set1 
myarr1=() 
for ID in $(seq $START_set1 1 $END_set1); do # typo, range iteration 
    myarr1[${#myarr1[@]}]=${ID} # fill set1 
done 
echo ${myarr1[@]} 
echo --- 

#set2 
myarr2=() 
for ID in $(seq $START_set2 1 $END_set2); do # range iteration 
    myarr2[${#myarr2[@]}]=${ID} # fill set2 
done 
echo ${myarr2[@]} 
echo --- 

app=("${myarr1[@]}" "${myarr2[@]}") 
echo ${app[@]} # access all elements, like above