bash 변수를 비교하여 5로 나눌 수 있는지 확인하세요.

bash 변수를 비교하여 5로 나눌 수 있는지 확인하세요.

$COUNTER여기 내 코드가 있습니다. 여러 번 비교 하고 싶습니다 .

if [ "$COUNTER" = "5" ]; then

괜찮아요 하지만 하고 싶어요동적5,10,15,20이럴 때가

답변1

다양한 의견의 결론은 원래 질문에 대한 가장 간단한 대답은 다음과 같습니다.

if ! (( $COUNTER % 5 )) ; then

답변2

모듈로 산술 연산자를 사용하여 이 작업을 수행할 수 있습니다.

#!/bin/sh

counter="$1"
remainder=$(( counter % 5 ))
echo "Counter is $counter"
if [ "$remainder" -eq 0 ]; then
    echo 'its a multiple of 5'
else
    echo 'its not a multiple of 5'
fi

사용 중:

$ ./modulo.sh 10
Counter is 10
its a multiple of 5
$ ./modulo.sh 12
Counter is 12
its not a multiple of 5
$ ./modulo.sh 300
Counter is 300
its a multiple of 5

나는 또한 당신이 찾고 있는 루프를 작성했습니다. 그러면 1부터 600까지의 모든 숫자를 반복하여 5의 배수인지 확인합니다.

루프 문

#!/bin/sh
i=1
while [ "$i" -le 600 ]; do
        remainder=$(( i % 5 ))
        [ "$remainder" -eq 0 ] && echo "$i is a multiple of 5"
        i=$(( i + 1 ))
done

산출(줄이다)

$ ./loop.sh
5 is a multiple of 5
10 is a multiple of 5
15 is a multiple of 5
20 is a multiple of 5
25 is a multiple of 5
30 is a multiple of 5
...
555 is a multiple of 5
560 is a multiple of 5
565 is a multiple of 5
570 is a multiple of 5
575 is a multiple of 5
580 is a multiple of 5
585 is a multiple of 5
590 is a multiple of 5
595 is a multiple of 5
600 is a multiple of 5

답변3

질문에 답하다정확히현재 작성된 대로 제목(수정됨)을 무시합니다.

변수의 정수를 다른 정수 값과 비교합니다. 여기서 다른 값은 미리 결정됩니다(질문에서 "동적"이 실제로 무엇을 의미하는지 명확하지 않습니다).

case "$value" in
    5|10|15|200|400|600)
        echo 'The value is one of those numbers' ;;
    *)
        echo 'The value is not one of those numbers'
esac

물론 이것은 루프에서도 수행될 수 있습니다.

for i in 5 10 15 200 400 600; do
    if [ "$value" -eq "$i" ]; then
        echo 'The value is one of those numbers'
        break
    fi
done

하지만 이로 인해 사건 처리가 더 어렵고 $value어려워 집니다.아니요일종의 플래그를 사용하지 않고 주어진 숫자 내에서 찾기:

found=0
for i in 5 10 15 200 400 600; do
    if [ "$value" -eq "$i" ]; then
        echo 'The value is one of those numbers'
        found=1
        break
    fi
done

if [ "$found" -eq 0 ]; then
    echo 'The value is not one of those numbers'
fi

아니면 청소기,

found=0
for i in 5 10 15 200 400 600; do
    if [ "$value" -eq "$i" ]; then
        found=1
        break
    fi
done

if [ "$found" -eq 1 ]; then
    echo 'The value is one of those numbers'
else
    echo 'The value is not one of those numbers'
fi

제가 직접 case ... esac구현하겠습니다.

관련 정보