조건이 항상 true로 평가되는 경우

조건이 항상 true로 평가되는 경우
        if [[ ${fin[2]} -eq OK && ${fin[7]} -eq NA ]]
        then
                echo "<tr id="green">" >> /tmp/mailt.txt
        elif [[ ${fin[2]} -eq OK && ${fin[7]} -lt 0 ]]
        then
                echo "<tr id="yellow">" >> /tmp/mailt.txt
        elif [[ ${fin[2]} -ne OK && ${fin[7]} -eq NA && $currDate2 -gt $expectedFinishTimes ]]
        then
                echo "<tr id="red">" >> /tmp/mailt.txt
        elif [[ ${fin[2]} -ne OK && ${fin[7]} -eq NA && $currDate2 -lt $expectedFinishTimes ]]
        then
                echo "<tr id="white">" >> /tmp/mailt.txt
        fi

위의 경우 ${fin[2]}OK와 같지 않더라도 첫 번째 조건만 true로 평가됩니다. 뭐가 문제 야?

답변1

운영자 님 -eq그리고 -ne그렇죠산수비교에 사용되는 연산자수치데이터.

당신이 원하는 것은 다음 ==과 같습니다 !=.

if [[ "${fin[2]}" == 'OK' ]] &&
   [[ "${fin[7]}" == 'NA' ]]; then

그리고

elif [[ "${fin[2]}" != 'OK' ]] &&
     [[ "${fin[7]}" == 'NA' ]] &&
     (( currDate2 < expectedFinishTimes )); then

(예를 들어).


또한 인용문과 다음 사항을 참고하세요 echo.

echo "<tr id="green">"

다음과 같이 쓰는 것이 더 낫다

echo '<tr id="green">'

첫 번째는 생산할 것입니다

<tr id=green>

두 번째 제품이 생산되는 동안

<tr id="green">

관련 정보