15.1.4 for的无限循环

无限循环又叫“死循环”,要注意的是:和代码设计功能无关的无限循环,或者说是开发者意料之外的无限循环都属于软件bug,这类bug容易造成系统资源耗尽,造成严重的系统故障,所以要非常小心,避免出现这种问题。开发者在用循环语句的时候要尤其要注意循环结束条件,有条件的要进行测试。

使用类C的for循环结构可以很简单地制造无限循环,只需要保证expression2永远为真就可以了。下面的代码定义了i永远等于0,所以i<1永远成立,该代码会一直打印“infinite loop”,直至按下Ctrl+C组合键。


  1. [root@localhost ~]# cat c_for04.sh
  2. #!/bin/bash
  3. for ((i=0; i<1; i+=0))
  4. do
  5. echo "infinite loop"
  6. done

更简单的方式是直接将条件表达式expression2置为1,而原本用于初始化的expression1和用户改变变量值的expression3则均置为空,代码如下所示:


  1. [root@localhost ~]# cat c_for05.sh
  2. #!/bin/bash
  3. for ((;1;))
  4. do
  5. echo "infinite loop"
  6. done