bash 스크립트의 while 루프

bash 스크립트의 while 루프

내 코드는 다음과 같습니다

#!/bin/bash

while true; do

    COUNTER=$((COUNTER +1))     
    echo $COUNTER

    if (($COUNTER%3 == 0));  then
        echo "Counter now is 3"
        sleep 2
    fi

    if (($COUNTER%6 == 0));  then
        echo "Counter now is 6"
        sleep 2
    fi

    if (($COUNTER%9 == 0));  then
        echo "Counter now is 9"
        sleep 2
    fi

    if (($COUNTER%12 == 0));  then
        echo "Counter now is 12"
        sleep 2
    fi

    if (($COUNTER%15 == 0));  then
        echo "Counter now is 15"
        sleep 2
        exit
    fi

done

내 결과는 다음과 같습니다

./test2.sh 
1
2
3
Counter now is 3
4
5
6
Counter now is 3
Counter now is 6
7
8
9
Counter now is 3
Counter now is 9
10
11
12
Counter now is 3
Counter now is 6
Counter now is 12
13
14
15
Counter now is 3
Counter now is 15

Counter now is 3왜 매번 또는 때로는 더 많이 표시됩니까 echo? 추가 콘텐츠를 표시하고 싶지 않습니다.echo

답변1

해당 테스트에서 테스트한 내용이 출력에 명시되어 있으면 더 정확할 것입니다.

if (( COUNTER%3 == 0 )); then
    echo 'COUNTER is a multiple of 3'
fi

여기 테스트가 있습니다. 생각해 보면 6, 9, 12, 15도 3의 배수입니다.

이 짧은 스크립트에서 카운터의 실제 값이 일부 값의 배수인지 확인하려면 on COUNTER대신 직접 테스트하는 것이 좋습니다.COUNTER%somevalue

if (( COUNTER == 3 )); then
    echo 'COUNTER is 3'
fi

$변수가 산술 컨텍스트에서 사용될 때는 변수가 필요하지 않습니다 .

답변2

그 결과가 거짓이기 때문입니다.

  • "개수는..."이라고 말하면 출력은 무엇입니까?
  • "Count is"보다 더 좋은 단어가 있을까요?
  • 어디에서 echo계산되나요? (계산한다는 것은 echo...)

이 문제를 해결한 후에는 문제가 무엇인지 이해해야 합니다.

관련 정보