유사한 인덱스를 합산하여 bash에서 두 배열을 결합하는 방법은 무엇입니까?

유사한 인덱스를 합산하여 bash에서 두 배열을 결합하는 방법은 무엇입니까?

bash에 다음과 같이 두 개의 배열(또는 하나 이상의 배열!)이 있다고 가정합니다.

a=(1 0 1)
b=(0,1,1)

어떻게 결합합니까?

c=(1 1 2)

각 요소를 더하면 c가 나오나요?

답변1

첫째, 배열 정의는 bash배열 ,요소 사이에 있지 않고 단순히 다음과 같이 정의됩니다.

a=(1 0 1)
b=(0 1 1)

동일한 인덱스에 있는 요소의 합으로 새 배열을 생성하려면 두 배열 인덱스 중 하나를 반복합니다(두 경우 모두 배열 길이가 동일하다고 가정).

for idx in "${!a[@]}"; do 
    c[idx]=$(( a[idx] + b[idx] ))
done

반복 인덱스를 사용하는 것 외에도 ${!a[@]}전통적인 C 스타일 for 루프를 사용하여 배열 길이를 반복할 수도 있습니다.

for (( idx=0; idx < ${#a[@]}; idx++ )); do 

마지막으로 결과를 새 배열로 인쇄하려면 다음과 같이 할 수 있습니다.

printf '%s\n' "${c[@]}"

답변2

이 시도,

a=(1,0,1)
b=(0,1,1)
a1=(`echo $a | tr ',' ' '`)
b1=(`echo $b | tr ',' ' '`)
for i in `seq 0 1 ${#a1[@]}`
do
        c1[$i]=`expr ${a1[$i]} + ${b1[$i]}`
done
c=(`echo ${c1[@]} | tr ' ' ','`)

관련 정보