내 코드는 다음과 같습니다
#!/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
...)
이 문제를 해결한 후에는 문제가 무엇인지 이해해야 합니다.