用于测试shell脚本代码

时间:2018-02-08 00:56:50

标签: bash scripting

我想为我的作业测试我的代码,但我一直遇到这个问题

floor=54
ceiling=116
num=0
while [ $num -ne 100 ]
num=0
do
  while [ $num -le $floor ] 
  do
    num=$RANDOM
    let "num %= $ceiling"
  done
echo $num
done

从内循环可以看出,目标是生成[55, 155]范围内的随机数。外环内部和内环外部的所有内容都只是用于测试实际代码。现在我想检查我的原始循环是否可以同时生成55155。我尝试使用100进行测试,因为我使用55进行的原始测试只是继续进行,而100是一个更容易识别外部循环是否有效的数字。它没有。我发现100,但外部循环不断产生更多数字。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您将num=0置于while循环的条件下(即do之前。这意味着测试几乎被忽略,因为num=0总是如此成功后,条件的退出状态始终为0,导致无限循环。您需要

while [ "$num" -ne 100 ]
do
    num=0
    ...

这是一个微妙的错误,部分原因是条件可以是任意命令列表。这是我希望dowhile位于同一行的一个原因:

while [ "$num" -ne 100 ]; do
    num=0

这使得你更难以认为你在条件中包含num=0而不是你写的

while [ "$num" -ne 100; num=0; do
    ...