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 ' ' ','`)