흥미로운 문제가 있어서 해결하려고 하는데 아직 해결하지 못했습니다.
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에 익숙하다면 이러한 bash
s -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 ' ' -