배열을 사용하여 bash에서 음수 값 비교

배열을 사용하여 bash에서 음수 값 비교

흥미로운 문제가 있어서 해결하려고 하는데 아직 해결하지 못했습니다.

2개의 배열이 있다고 가정해 보겠습니다.

배열 1:

1 -2 3 -2 2 -4

배열 2:

-2 -3 4 5 2 -5

Array one합계의 i번째 값을 실제로 비교할 수 있기를 원합니다 Array two.

  • 둘 다 음수이면 입력하겠습니다.Array Three 0
  • 모두 긍정적이면 추가하겠습니다.1
  • 반대라면2

산출:

2 0 1 2 1 0 

어떻게 해야 하나요?

답변1

C, C++ 또는 Java에 익숙하다면 이러한 bashs -loop for변형 도 매우 익숙할 것입니다. bash산술 평가가 완료되었으므로 (( ... ))값을 비교할 때 이를 사용합니다.

array1=(  1 -2  3 -2  2 -4 )
array2=( -2 -3  4  5  2 -5 )

array3=( )

for (( i=0; i < ${#array1[@]}; ++i )); do
    if (( array1[i] < 0 && array2[i] < 0 )); then
        array3[$i]=0
    elif (( array1[i] > 0 && array2[i] > 0 )); then
        array3[$i]=1
    else
        array3[$i]=2
    fi
done

echo "${array3[@]}"

이는 많은 기능이 파생되는 ksh93셸 에서도 작동합니다.bash

답변2

직접 방법:

arr1=(1 -2 3 -2 2 -4)
arr2=(-2 -3 4 5 2 -5)

i=0

while [[ "$i" -lt "${#arr1[@]}" ]]; do
  a=$(( ${arr1[$i]} * ${arr2[$i]} ))
  if [[ "$a" -lt 0 ]]; then
    echo 2
  else
    if [[ "${arr1[$i]}" -gt 0 ]]; then
      echo 1
    else
      echo 0
    fi
  fi
  : "$((i = i + 1))"
done | paste -sd ' ' -

관련 정보