Shell脚本编程中for while until三种循环的使用方法

striver0 2011-02-12

bash shell 中常用的 loop 有如下三种:
* for
* while
* until
for loop 是从一个清单列表中读进变量值,并"依次"的循环执行 do 到 done 之间的命令行。
例:
for var in one two three four five
do
echo -----------
echo '$var is '$var
echo
done
上例的执行结果将会是:
1) for 会定义一个叫 var 的变量,其值依次是 one two three four five 。
2) 因为有 5 个变量值,因此 do 与 done 之间的命令行会被循环执行 5 次。
3) 每次循环均用 echo 产生三行句子。
而第二行中不在 hard quote 之内的 $var 会依次被替换为 one two three four five 。
4) 当最后一个变量值处理完毕,循环结束。
我们不难看出,在 for loop 中,变量值的多寡,决定循环的次数。然而,变量在循环中是否使用则不一定,得视设计需求而定。倘若 for loop 没有使用 in 这个 keyword 来指定变量值清单的话,其值将从 $@ (或 $* )中继承:
for var; do
....
done
(若你忘记了 positional parameter ,请温习第9问...)
for loop 用于处理"清单"(list)项目非常方便,其清单除了可明确指定或从 positional parameter 取得之外,也可从变量替换或命令替换取得... (再一次提醒:别忘了命令行的"重组"特性﹗) 然而,对于一些"累计变化"的项目(如整数加减),for 亦能处理:
for ((i=1;i<=10;i++))
do
echo "num is $i"
done

【注意】如果你使用的是Ubuntu,那么会出现bad varible的错误提示。

原因是Ubuntu为了加快开机启动速度,采用了dash替代了传统的bash,你只要取消dash即可,即sudo dpkg-reconfigure dash 选择no就好了。
除了 for loop ,上面的例子我们也可改用 while loop 来做到:

  1. #!/bin/sh   
  2. i=1   
  3. while [ "$i" -le 10 ]   
  4. do  
  5. echo "num is $i"  
  6. rm -rf mywebsite.txt   
  7. curl -i http://blog.csdn.net/walfred89_/archive/2011/02/11/6178099.aspx > mywebsite.txt   
  8. i=$((i+1))   
  9. sleep 1   
  10. done  

相关推荐