$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
구현하겠습니다.