我的代码是:
#!/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 的倍数。
在这个简短的脚本中,如果您想检查计数器的实际值而不是它是否是某个值的倍数,我建议您直接测试 onCOUNTER
而不是 on :COUNTER%somevalue
if (( COUNTER == 3 )); then
echo 'COUNTER is 3'
fi
请注意,$
当变量在算术上下文中使用时,不需要变量。
答案2
因为输出是一个谎言。
- 当它说“count is…”时,输出是什么?
- 还有什么比“Count is”更好的文字呢?
- 哪里
echo
算数呢? (让它echo
算数是……)
当你解决这个问题后,你应该明白它在做什么。